Ruby on rails 在用户登录失败后设计重定向
我知道有一个关于它的wiki页面,但由于我对Rails非常陌生,所以我在理解该页面时遇到了很多困难 我必须为我的用户覆盖注册控制器。当用户登录失败时,我希望他被重定向到我的自定义登录页面。但是申请书把他送到了创业板里面的登录页面 我怎样才能做到这一点我应该把这门课放在哪里,如何更改它? 我有多个型号,每个型号都有不同的登录页如何设置每个型号的范围?Ruby on rails 在用户登录失败后设计重定向,ruby-on-rails,session,login,devise,overriding,Ruby On Rails,Session,Login,Devise,Overriding,我知道有一个关于它的wiki页面,但由于我对Rails非常陌生,所以我在理解该页面时遇到了很多困难 我必须为我的用户覆盖注册控制器。当用户登录失败时,我希望他被重定向到我的自定义登录页面。但是申请书把他送到了创业板里面的登录页面 我怎样才能做到这一点我应该把这门课放在哪里,如何更改它? 我有多个型号,每个型号都有不同的登录页如何设置每个型号的范围? class CustomFailure < Devise::FailureApp def redirect_url #retu
class CustomFailure < Devise::FailureApp
def redirect_url
#return super unless [:worker, :employer, :user].include?(scope) #make it specific to a scope
new_user_session_url(:subdomain => 'secure')
end
# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
redirect
end
end
class CustomFailure“安全”)
结束
#您需要覆盖响应以消除召回
def响应
如果http_auth?
http_auth
其他的
重新使用
结束
结束
结束
设计是一个强大的宝石,但是一些维基页面没有考虑到有很多新的程序员
< P> >我在代码< >LIB < /C> >中直接有过Auth-Author失败。 下面是一个简单的版本,展示了如何为用户处理不同的作用域class MyAuthFailure < Devise::FailureApp
# add different cases here for diff scopes.
def redirect_url
if warden_options[:scope] == :user
root_path
elsif warden_options[:scope] == :admin
admin_root_path
end
end
# You need to override respond to eliminate recall
def respond
if http_auth?
http_auth
else
redirect
end
end
end
类MyAuthFailure
您会将该类放入
/lib/my\u auth\u failure.rb
此解决方案非常有效,但如果您不按照本文的建议进行测试,您将遇到问题:
您的测试仍将使用默认值重定向
例如:
current_path.should == signin_path
将失败,因为当前路径实际上是
用户/sign\u in
或其他内容。请查看此[post][1]。这可能对你有帮助。[1] :好的,这就是我所尝试的:我已经为我的每个模型设置了路由,正如维基所建议的,新的“模型”\u会话\u路径,但我在这里遇到了同样的问题。失败登录不要重定向到我的视图,而是设计一个视图您将CustomFailure.rb文件放在哪里?它看起来还是和你上面贴的一样吗?问题是这个。我不知道该怎么说。我应该为每个模型创建一个新文件吗?我应该将该文件放在哪里?或者我必须为所有型号保留一个文件吗?不。这对我不起作用。我是照你说的做的。我也需要注册管理员elsif warden_options[:scope]==:admin new_admin_session_path end
和从我的路径:new_admin_session GET/admin(:format)admin/sessions#new
但它一直重定向到/sign而不是/admin