我有一个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
但是,当我执行此操作时出现重定向错误,因为我将根路由设置为需要进行身份验证的路径。
我现在可以在视图或其他控制器中执行此操作,但我想在应用控制器中执行此操作,因为我希望锁定整个应用。
答案 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