登录失败后设计重定向

我发现的所有问题都与成功登录帮助程序有关。 after_sign_in_path_for(resource)

我在网站的索引中有一个登录表单,当登录失败时,它将重定向到“ users / sign_in”

但是,登录失败时如何重定向到“ site#index”?


FFIVE
浏览 608回答 3
3回答

莫回无

使用以下命令在您的lib目录中创建一个custom_failure.rb:class CustomFailure < Devise::FailureApp&nbsp; def redirect_url&nbsp; &nbsp; your_path&nbsp; end&nbsp; def respond&nbsp; &nbsp; if http_auth?&nbsp; &nbsp; &nbsp; http_auth&nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; redirect&nbsp; &nbsp; end&nbsp; endend在您的Devise初始化程序中,包括:&nbsp; config.warden do |manager|&nbsp; &nbsp; manager.failure_app = CustomFailure&nbsp; end确保Rails已加载到application.rb中的lib文件中:config.autoload_paths += %W(#{config.root}/lib)不要忘记重启服务器。我认为没有比这更简单的方法了。祝好运。

不负相思意

如果使用您自己的SessionsController,则可以在运行之前重新分配的:recall值以auth_options重新调用所需的值,例如:controller#methodwarden.authenticate!(auth_options)在app / controllers / users / sessions_controller.rb中class Users::SessionsController < Devise::SessionsController&nbsp; #...&nbsp; def create&nbsp; &nbsp; #...&nbsp; &nbsp; auth_options = { :recall => 'site#index', :scope => :user }&nbsp; &nbsp; resource = warden.authenticate!(auth_options)&nbsp; &nbsp; #...&nbsp; end&nbsp; #...end通过这种方式,您无需创建自定义的FailureApp并修改配置。

凤凰求蛊

这是设计3.1.0发生的情况Started POST "/users/sign_in"Processing by Devise::SessionsController#createCompleted 401 UnauthorizedProcessing by Devise::SessionsController#new由于在gems / devise-3.1.0 / app / controllers / devise / sessions_controller.rb末尾定义的auth_options而调用了new您应该重新定义在create操作中使用的auth_options。我将控制器复制到我的Rails应用程序的app / controllers / devise / sessions_controller.rb中,并替换了auth_options方法,如下所示def auth_options&nbsp; { :scope => resource_name, :recall => "Home#new" }end它可以解决问题,但是url仍然是/ users / sign_in我也会尝试解决该问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby