Не может поместить поле адреса электронной почты на форму входа в систему (Authlogic)

осматривают , модуль является также замечательной функцией.

14
задан Tom Lehman 26 August 2009 в 00:17
поделиться

6 ответов

Вы делаете это неправильно:

Попробуйте:

class UserSession < Authlogic::Session::Base 
  find_by_login_method :find_by_login_or_email
end 

и в user.rb

def self.find_by_login_or_email(login)
   find_by_login(login) || find_by_email(login)
end

Ваша UserSession не имеет понятия электронной почты (она просто знает о входе в систему).

Он выполняет процесс поиска Пользователя с учетом логина, который вы можете перехватить и переопределить (с помощью метода find_by_login_method ). Для дополнительного бонуса вы также можете переопределить, login_field и password_field или даже verify_password_method

31
ответ дан 1 December 2019 в 06:28
поделиться

Я не знаю точно, как работает Authlogic, но я предполагаю, что это то, чем вы закончили

Но из Конечно, в моей таблице пользователей есть поле электронной почты и т. д.

Судя по его звучанию, это не обязательно означает, что оно есть в вашей UserSession, или оно есть?

-1
ответ дан 1 December 2019 в 06:28
поделиться

Это говорит о том, что в UserSession нет поля электронной почты. Он не смотрит на пользователя, так как у вас есть:

form_for @user_session
-2
ответ дан 1 December 2019 в 06:28
поделиться

У меня была та же проблема, и я обнаружил, что вы должны убедиться, что логин не указан в вашей схеме и базе данных (вам он все равно не понадобится, так как вы решили использовать электронную почту, как я )

0
ответ дан 1 December 2019 в 06:28
поделиться

Assuming you're using a User model, the easiest way to use email for authentication in Authlogic is:

class User < ActiveRecord::Base

  acts_as_authentic do |c|
    c.login_field = 'email'
  end

end
18
ответ дан 1 December 2019 в 06:28
поделиться

Я могу быть полностью неправ, но я считаю, что если вы создадите модель пользователя с полем email и без поля login, то Authlogic будет использовать его для UserSession. Однако, если ваша модель пользователя имеет поле login, но вы не используете его (т.е. вы переключили представление на :email, а не на :login), то UserSession все равно будет искать login, а не email, и вы получите сообщение об ошибке.

Если ваша модель пользователя не имеет поля login, то эта проблема должна исчезнуть, так как Authlogic по умолчанию будет использовать :email вместо него.

0
ответ дан 1 December 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: