Authlogic:如何查找用户是否因为未登录而未登录

Authlogic:如何查找用户是否因为未登录而未登录,authlogic,ruby-on-rails,Authlogic,Ruby On Rails,我正在将authlogic与rails应用程序一起用于身份验证。 易腐令牌在用户重置其密码后重置。 考虑这种情况。 当用户注册时,他忘记了激活帐户,也忘记了密码。 所以他重置了密码。因此,他的激活链接不再有效。所以他不能激活他的帐户。当他尝试登录时,他得到一个错误,即帐户未激活。 用户被卡住了 我找到的解决方案是每次由于帐户未激活而阻止登录时重新发送激活链接 现在的问题是,我需要检查用户尝试登录时出现的错误类型,以便重新发送激活电子邮件 问候,, Pankaj使用您的数据库捕获注册、激活、重置和

我正在将authlogic与rails应用程序一起用于身份验证。 易腐令牌在用户重置其密码后重置。 考虑这种情况。 当用户注册时,他忘记了激活帐户,也忘记了密码。 所以他重置了密码。因此,他的激活链接不再有效。所以他不能激活他的帐户。当他尝试登录时,他得到一个错误,即帐户未激活。 用户被卡住了

我找到的解决方案是每次由于帐户未激活而阻止登录时重新发送激活链接

现在的问题是,我需要检查用户尝试登录时出现的错误类型,以便重新发送激活电子邮件

问候,,
Pankaj

使用您的数据库捕获注册、激活、重置和其他详细信息。这样您就知道需要采取什么行动。

使用您的数据库捕获注册、激活、重置和其他详细信息。这样您就知道需要采取什么行动。

我没有检查实际的错误,而是能够使用
@user\u session.trusted\u record&&检查导致错误的条件@用户会话。密码无效&&
!@用户会话。尝试记录。活动?

以下是我重新发送激活电子邮件的完整解决方案(使用设置激活后):

#/app/controllers/users_sessions_controller.rb
def创建
@user\u session=UserSession.new(参数[:user\u session])
if@user\u session.save
将\u重定向回\u或\u默认根\u路径
elsif@user\u session.trusted\u记录&&
!@用户会话。密码无效&&
!@用户\u会话。已尝试\u记录。是否处于活动状态?
flash[:notice]=呈现到字符串(:partial=>'user\u sessions/not\u active.erb',:locals=>{:user=>@user\u session.trusted\u record})
重定向到:action=>:new
其他的
呈现:操作=>:新建
结束
结束
#/app/views/user\u sessions/\u not\u active.erb
抱歉,在您登录之前,您需要确认您的电子邮件地址。user.login))%>
#/app/controllers/users\u controller.rb
def重新发送\u激活
如果参数[:登录]
@user=user.find_by_login参数[:login]
如果@user&@user.active?
@user.deliver\u激活\u说明!
flash[:notice]=“请检查您的电子邮件以了解您的帐户激活说明!”
将\重定向到根\路径
结束
结束
结束
#/config/routes.rb
map.resources:users,:collection=>{:重新发送\激活=>:get}

我没有检查实际的错误,而是能够使用
@user\u session.trusted\u record&&检查导致错误的条件@用户会话。密码无效&&
!@用户会话。尝试记录。活动?

以下是我重新发送激活电子邮件的完整解决方案(使用设置激活后):

#/app/controllers/users_sessions_controller.rb
def创建
@user\u session=UserSession.new(参数[:user\u session])
if@user\u session.save
将\u重定向回\u或\u默认根\u路径
elsif@user\u session.trusted\u记录&&
!@用户会话。密码无效&&
!@用户\u会话。已尝试\u记录。是否处于活动状态?
flash[:notice]=呈现到字符串(:partial=>'user\u sessions/not\u active.erb',:locals=>{:user=>@user\u session.trusted\u record})
重定向到:action=>:new
其他的
呈现:操作=>:新建
结束
结束
#/app/views/user\u sessions/\u not\u active.erb
抱歉,在您登录之前,您需要确认您的电子邮件地址。user.login))%>
#/app/controllers/users\u controller.rb
def重新发送\u激活
如果参数[:登录]
@user=user.find_by_login参数[:login]
如果@user&@user.active?
@user.deliver\u激活\u说明!
flash[:notice]=“请检查您的电子邮件以了解您的帐户激活说明!”
将\重定向到根\路径
结束
结束
结束
#/config/routes.rb
map.resources:users,:collection=>{:重新发送\激活=>:get}
迈克:

您应该跳过应用程序中已有的筛选器,而不是添加新筛选器。rb

方法是:

skip_before_filter :require_user
我希望这对某人有用

迈克:

您应该跳过应用程序中已有的筛选器,而不是添加新筛选器。rb

方法是:

skip_before_filter :require_user

我希望这对其他人有用

请注意:主题应该是:Authlogic:如何查找用户是否因为输入了无效凭据或未处于活动状态而未登录。请注意:主题应该是:Authlogic:如何查找用户是否因为输入了无效凭据而未登录因为他不在活动状态,所以没有证书。