Ruby on rails 巫术简单登录用户名
我在一个用RoR写的博客网站上工作,遇到了一个巫术问题。我根据他们的文档编写了教程来创建简单的登录。我的问题是,他们在登录时使用电子邮件来识别用户 因此,我尝试修改会话控制器,将用户名作为参数发送,而不是电子邮件,并相应地修改了我的视图 日志显示一切正常,用户名和密码被传递到数据库。但是,我找不到解决方案,生成的SQL字符串仍然使用“authors”,“email”作为参数 我怎样才能解决这个问题 我的日志:Ruby on rails 巫术简单登录用户名,ruby-on-rails,sorcery,Ruby On Rails,Sorcery,我在一个用RoR写的博客网站上工作,遇到了一个巫术问题。我根据他们的文档编写了教程来创建简单的登录。我的问题是,他们在登录时使用电子邮件来识别用户 因此,我尝试修改会话控制器,将用户名作为参数发送,而不是电子邮件,并相应地修改了我的视图 日志显示一切正常,用户名和密码被传递到数据库。但是,我找不到解决方案,生成的SQL字符串仍然使用“authors”,“email”作为参数 我怎样才能解决这个问题 我的日志: Processing by AuthorSessionsController#crea
Processing by AuthorSessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"ForXjJMiPCI6H37xqtPzGwa9XBOHx1yIaGjlZdUd6Iw+G4M5v6s/JXrFcGG5VVyuFl6Is+cr5Zp/fxJcNyS/Tw==", "username"=>"Test", "password"=>"[FILTERED]", "commit"=>"Login"}
Author Load (0.5ms) SELECT "authors".* FROM "authors" WHERE "authors"."email" = 'Test' ORDER BY "authors"."id" ASC LIMIT ? [["LIMIT", 1]]
Rendering author_sessions/new.html.erb within layouts/application
Rendered author_sessions/new.html.erb within layouts/application (2.4ms)
Completed 200 OK in 63ms (Views: 49.6ms | ActiveRecord: 2.5ms)
我的会话控制器:
class AuthorSessionsController < ApplicationController
def new
end
def create
if login(params[:username], params[:password])
redirect_back_or_to(articles_path, notice: 'Logged in successfully.')
else
flash.alert = 'Login failed.'
render action: :new
end
end
def destroy
logout
redirect_to(articles_path, notice: 'Logged out!')
end
end
class AuthorSessionsController
My new.html.erb
<h1>Login</h1>
<%= form_tag author_sessions_path, method: :post do %>
<div class="field">
<%= label_tag :username %>
<%= text_field_tag :username %>
<br>
</div>
<div class="field">
<%= label_tag :password %>
<%= password_field_tag :password %>
<br>
</div>
<div class="actions">
<%= submit_tag 'Login' %>
</div>
<% end %>
<%= link_to 'Back', articles_path %>
登录
我确实遇到了同样的问题,以下几点帮助了我:
-在迁移文件中安装sorcery(rails g sorcery:install)时,请将:email更改为:username,使其看起来像这样
class SorceryCore < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :username, :null => false
t.string :crypted_password
t.string :salt
t.timestamps :null => false
end
add_index :users, :username, unique: true
end
end
class-SorceryCorefalse
t、 字符串:加密的密码
t、 绳子:盐
t、 时间戳:null=>false
结束
添加索引:users,:username,unique:true
结束
结束
- 然后
所以我有了一个用户模型rakedb:migrate
- 我看到您已经创建了用户会话,所以让我们跳过
和填充视图部分rails generate controller UserSessions new create destroy
- 在创建操作的“我的用户会话”\u controller.rb文件中,我还调用了
,这是一种巫术方法,默认情况下它将登录(params[:username],params[:password])
作为:email
用户名属性
- 要将其更改为
,我去了:username
,找到了/config/initializers/sorcery.rb
行(第188行附近),并在其中添加了config.user\u config do | user |
,因此它将使用username代替电子邮件user.username\u属性_names=[:username]
这为我解决了问题。不要忘了将
:email
更改为:username
。我确实遇到了同样的问题,以下帮助:
-在迁移文件中安装sorcery(rails g sorcery:install)时,请将:email更改为:username,使其看起来像这样
class SorceryCore < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :username, :null => false
t.string :crypted_password
t.string :salt
t.timestamps :null => false
end
add_index :users, :username, unique: true
end
end
class-SorceryCorefalse
t、 字符串:加密的密码
t、 绳子:盐
t、 时间戳:null=>false
结束
添加索引:users,:username,unique:true
结束
结束
- 然后
所以我有了一个用户模型rakedb:migrate
- 我看到您已经创建了用户会话,所以让我们跳过
和填充视图部分rails generate controller UserSessions new create destroy
- 在创建操作的“我的用户会话”\u controller.rb文件中,我还调用了
,这是一种巫术方法,默认情况下它将登录(params[:username],params[:password])
作为:email
用户名属性
- 要将其更改为
,我去了:username
,找到了/config/initializers/sorcery.rb
行(第188行附近),并在其中添加了config.user\u config do | user |
,因此它将使用username代替电子邮件user.username\u属性_names=[:username]
:email
更改为:username