我有一个标准设计实现,并且在其他模型中,如果会话过期,似乎没有重定向,给用户留下错误消息。
例如,在用户个人资料页面上,如果未登录它只会显示错误,因为 current_user 不存在。
我是否在每个模型中设置了授权。或者更好的解决方案,我可以在应用程序控制器中设置它并在应用程序范围内进行设置,并在必要时简单地设置任何公共页面?
我有一个标准设计实现,并且在其他模型中,如果会话过期,似乎没有重定向,给用户留下错误消息。
例如,在用户个人资料页面上,如果未登录它只会显示错误,因为 current_user 不存在。
我是否在每个模型中设置了授权。或者更好的解决方案,我可以在应用程序控制器中设置它并在应用程序范围内进行设置,并在必要时简单地设置任何公共页面?
如果您希望特定控制器检查用户是否已登录,那么您需要使用 Devise 的 authenticate_user!功能。请参阅下面的示例
class StuffController < ApplicationController
before_filter :authenticate_user!
def index
..... more implementation
end
end
如果用户未登录,他们将被重定向到登录表单,然后在成功登录后重定向到所需页面
使用前置过滤器,例如before_filter :authenticate_user!
. 将它放在您的应用程序控制器中。是一个设计助手,所以如果你想要自定义行为,你可以重载该方法或简单地使用他们的助手方法authenticate_user!
编写自己的过滤器。user_signed_in?