我知道这听起来像是一个非常非常简单的用例,我希望确实如此,但我发誓我已经查遍了所有地方,但没有发现任何提及的方法 - 甚至不是最好的方法 -做这个。
我对 Ruby、Rails 以及与之相关的一切都是全新的(这可以解释为什么lot)。我用作学习工具的虚拟应用程序需要身份验证才能执行几乎任何有意义的操作,因此我选择从解决该问题开始。我已经安装了 AuthLogic gem 并让它在介绍文档和 Railscast 所涵盖的范围内运行良好,但现在我可以注册、登录和注销......我需要用它做一些事情。
例如,我需要创建一个用户可以上传图像的页面。我打算有一个ImagesController
与upload
操作方法,但我希望只有登录用户才能访问。我想在每个受限操作中,如果没有,我可以添加代码来重定向current_user
,但这看起来确实很冗长。
有没有更好的方法可以让我定义或识别限制区域并在一个地方处理身份验证检查?
确保您的 application_controller.rb 中有这些方法
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
def require_user
unless current_user
store_location
flash[:notice] = "You must be logged in to access this page"
redirect_to new_user_session_url
return false
end
end
然后在您的控制器中,您可以使用 before 过滤器来限制对页面的访问
class ExamplesController < ActionController::Base
before_filter :require_user, :only => :private
def public
// some public stuff
end
def private
// some protected stuff
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)