Rails设计了多个模型的设置授权

时间:2013-02-07 12:48:14

标签: ruby-on-rails ruby authentication devise

我有一个标准设计实现,并且在其他模型中,如果会话过期似乎没有重定向,则会给用户留下错误消息。

例如,在用户个人资料页面上,如果未登录,则只显示错误,因为current_user不存在。

我是否在每个模型中设置了授权。或者更好的解决方案,我可以在app控制器中设置它并在应用程序范围内进行操作,只需在必要时设置任何公共页面吗?

2 个答案:

答案 0 :(得分:0)

如果您希望特定控制器检查用户是否已登录,那么您想要使用Devise的authenticate_user!功能。见下面的例子

class StuffController < ApplicationController
  before_filter :authenticate_user!
  def index
    ..... more implementation
  end
end

如果用户未登录,他们将被重定向到登录表单,然后在成功登录后重定向到所需页面

答案 1 :(得分:0)

使用之前的过滤器,例如before_filter :authenticate_user!。将其放在应用程序控制器中。 authenticate_user!是一个设计帮助器,因此如果您想要自定义行为,您可以重载该方法,或者使用他们的user_signed_in?辅助方法编写您自己的过滤器。