繁体   English   中英

如果用户未登录,则重定向到登录页面

[英]redirect to login page if user not logged in

如果他没有登录,我希望我的用户被重定向到登录表单?

问题是我不想对每个动作都这样做。 我知道有一种方法可以让我只为每个控制器定义一次(即,无论控制器中的操作如何,都会执行某些操作),但我不记得是怎么做的。

使用before_filter 将以下内容放在您的应用程序控制器中。

# application_controller.rb

before_filter :require_login

private

  def require_login
    unless current_user
      redirect_to login_url
    end
  end

上面的代码假设您已经定义了一个方法current_user ,它在用户登录时返回用户记录。

然后,在您的登录控制器中

skip_before_filter :require_login

如果您希望仅在特定控制器上重定向登录,请使用:

skip_before_filter :require_login, :only=>[:edit,:update] 

或者:

skip_before_filter :require_login, :except=>[:new,:create]

在您的 action_controller.rb 中作为 before_filter。

如果您使用的是设计,则可以向控制器添加 before_action 助手

before_action :authenticate_user!

https://github.com/heartcombo/devise#controller-filters-and-helpers

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM