0

首先,我是 ROR 的新手。

我有一个用户模型

class User < ActiveRecord::Base

  attr_accessible :email, :name, :password, :password_confirmation,:gender,:date,:username
  has_secure_password
end  

和一个SessionsController用于登录/注销会话,使用新、创建和销毁方法:

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])
4

1 回答 1

1

我强烈强烈建议使用 Devise ( https://github.com/plataformatec/devise ) 之类的东西进行身份验证,特别是如果您不熟悉 RoR。身份验证有很多问题,它是您应用程序的关键部分,您应该有充分的理由尝试自己进行。

于 2013-05-15T10:02:19.877 回答