gpt4 book ai didi

ruby-on-rails - 如果用户未通过 Devise 进行身份验证,则重定向到登录页面

转载 作者:行者123 更新时间:2023-12-02 15:21:01 25 4
gpt4 key购买 nike

我正在将 Devise 与 Ruby on Rails 结合使用。

如果未经身份验证的用户尝试访问需要身份验证的页面,建议将其重定向到session#new 页面的方法是什么?

现在我收到一条错误消息,指出没有路由与他们尝试访问的路由匹配(导致生产中出现 404 错误)。

最佳答案

只需简单地将此方法添加到application_controller.rb

  protected
def authenticate_user!
if user_signed_in?
super
else
redirect_to login_path, :notice => 'if you want to add a notice'
## if you want render 404 page
## render :file => File.join(Rails.root, 'public/404'), :formats => [:html], :status => 404, :layout => false
end
end

您可以在 before_filter 另一个您想要的 Controller 上调用此方法。

例如:

class HomesController < ApplicationController
before_filter :authenticate_user!
## if you want spesific action for require authentication
## before_filter :authenticate_user!, :only => [:action1, :action2]
end

不要忘记将login_path添加到routes.rb

devise_scope :user do
match '/sign-in' => "devise/sessions#new", :as => :login
end

注意:当我使用设备进行应用程序身份验证时,我总是使用这种方式..(rails 3.2和rails 4.0.1)

关于ruby-on-rails - 如果用户未通过 Devise 进行身份验证,则重定向到登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com