检查设计中的授权标志

时间:2016-11-04 15:41:24

标签: ruby-on-rails devise

我有一个rails应用程序,我添加了一个名为'授权'的布尔字段。到用户模型。基本上,我想锁定应用程序,以便只有授权用户才能访问该应用程序。我试图在我的应用程序控制器中执行此操作:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  def authorized
    redirect_to root_path, alert: "Not Authorized" if !current_user.authorized?
  end

end

但是,当我执行此操作时出现重定向错误,因为我将根路由设置为需要进行身份验证的路径。

我现在可以在视图或其他控制器中执行此操作,但我想在应用控制器中执行此操作,因为我希望锁定整个应用。

2 个答案:

答案 0 :(得分:0)

您可以在用户模型中覆盖这些方法。

  def active_for_authentication?
    super && approved?
  end

  def inactive_message
    'my custom inactive message' unless approved?
    super
  end

我建议您通过批准更改授权名称,我不确定但授权的声音就像内部设计方法名称。

答案 1 :(得分:0)

这是我的解决方案......

在我想要“授权”身份验证的控制器中,我添加了...

before_filter :authorized, :except => :not_authorized

...

def authorized
    if !current_user.authorized?
      redirect_to not_authorized_path
    end
end

在我的路线中,我添加了..

get 'not_authorized' => 'my_controller#not_authorized'

...并添加了一个简单的app / views / my_controller / not_authorized.html.erb