我有一个标准设计实现,并且在其他模型中,如果会话过期似乎没有重定向,则会给用户留下错误消息。
例如,在用户个人资料页面上,如果未登录,则只显示错误,因为current_user不存在。
我是否在每个模型中设置了授权。或者更好的解决方案,我可以在app控制器中设置它并在应用程序范围内进行操作,只需在必要时设置任何公共页面吗?
答案 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?
辅助方法编写您自己的过滤器。