加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用AuthLogic保护内容

发布时间:2020-12-17 02:57:49 所属栏目:百科 来源:网络整理
导读:我知道这听起来像一个非常非常简单的用例,我希望它是,但我发誓我已经到处寻找并且没有找到任何方式 – 甚至不是最好的方式 – 这样做. 我是Ruby,Rails以及周围所有东西的新品牌(可能解释很多).我正在使用的虚拟应用程序作为我的学习工具需要进行身份验证才能
我知道这听起来像一个非常非常简单的用例,我希望它是,但我发誓我已经到处寻找并且没有找到任何方式 – 甚至不是最好的方式 – 这样做.

我是Ruby,Rails以及周围所有东西的新品牌(可能解释很多).我正在使用的虚拟应用程序作为我的学习工具需要进行身份验证才能完成几乎任何有意义的操作,因此我选择从解决该问题开始.我已经安装了AuthLogic gem并且它在介绍文档和Railscast所涵盖的范围内工作得很好,但现在我可以注册,登录和注销……我需要用它做一些事情.

例如,我需要创建一个用户可以上传图像的页面.我打算让一个带有上传操作方法的ImagesController,但我希望只有登录用户才能访问.我想在每个限制动作中,如果没有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

然后在您的控制器中,您可以使用前置过滤器来限制对页面的访问

class ExamplesController < ActionController::Base
  before_filter :require_user,:only => :private

  def public
    // some public stuff
  end

  def private
    // some protected stuff
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读