首先,我是ROR的新手。
我有一个用户模型:
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation,:gender,:date,:username
has_secure_password
end
和 SessionsController ,用于使用new,create和destroy方法进行登录/注销会话:
class SessionsController < ApplicationController
def create
user = User.find_by_username(params[:sessions][:username])
if user && user.authenticate(params[:sessions][:password])
sign_in
else
render sign_in page
end
end
此实施不适用于用户模型的用户名属性。但与电子邮件属性配合得很好。(我可以使用电子邮件登录,但不能使用用户名登录。)
当我在rails控制台中运行它时,它会对用户名和电子邮件属性进行身份验证,但在本地服务器上它只接受电子邮件属性。
我哪里错了?
此外,我还希望能够让用户使用用户名或电子邮件对我进行签名。我试过这个
class SessionsController < ApplicationController
def create
user = User.find_by_username(params[:sessions][:username]) or User.find_by_email(params[:sessions][:email])
if user && user.authenticate(params[:sessions][:password])
答案 0 :(得分:1)
我非常强烈建议您使用Devise(https://github.com/plataformatec/devise)之类的内容进行身份验证,尤其是在您不熟悉RoR的情况下。身份验证有很多问题,而且你应用程序的关键部分是你应该有充分的理由尝试自己做。