Проблемы со входом в Rails с разными атрибутами модели

Во-первых, я новичок в 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])

person mrudult    schedule 11.05.2013    source источник


Ответы (1)


Я настоятельно рекомендую использовать что-то вроде Devise (https://github.com/plataformatec/devise ) для аутентификации, особенно если вы новичок в RoR. С аутентификацией так много проблем, и это настолько важная часть вашего приложения, что у вас должна быть очень веская причина, чтобы попытаться сделать это самостоятельно.

person RobHeaton    schedule 15.05.2013
comment
Я просто хочу написать авторизацию самостоятельно. - person mrudult; 15.05.2013