`
52jobs
  • 浏览: 11985 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Authentication 用户登录 用户权限相关

 
阅读更多
引用

# 19Where Administration Goes#20 Restricting Access#21 Super Simple Authentication  以上三篇构一组 Authentication


# 19Where Administration Goes

script/generate scaffold episode "admin/episodes"

#Implementing The Admin Links

    <li>
        <p class="episodeId"><%= episode.episode_id %></p>
        <h3><%= link_to episode.title, episode_path(episode.identifier) %></h3>
        <p class="summary"><%= episode.summary %></p>
        <p class="tagList">Tags: <% episode.tags.each do |tag| %> <%= link_to tag.title, tag_path(tag.title) %> <% end %></p>
        <p class="adminActions">
          <%= link_to "Edit", edit_episode_path(episode) %>
          <%= link_to "Destroy", episode_path(episode), :confirm => "Are you sure?", :method => :delete %>
        </p>
    </li>
    <%= link_to &ldquo;New&rdquo;, new_episode_path %>


#20 Restricting Access

 
#episodes/index.rhtml
    <% if admin? %>
      <%= link_to 'New Episode', new_episode_path %>
    <% end %>

  #controllers/application.rb
    helper_method :admin?
    protected
    def admin?
      false
    end
    def authorize
      unless admin?
        flash[:error] = "unauthorized access"
        redirect_to home_path
        false
      end
    end

    #episodes_controller.rb
    before_filter :authorize, :except => :index

   

#21 Super Simple Authentication


controllers/application.rb
    def admin?
      session[:password] == 'foobar'
    end

sessions_controller.rb
  def create
    session[:password] = params[:password]
    flash[:notice] = "Successfully logged in"
    redirect_to home_path
  end
  def destroy
    reset_session
    flash[:notice] = "Successfully logged out"
    redirect_to login_path
  end

config/routes.rb
  map.resources :sessions, :episodes
  map.home '', :controller => 'episodes', :action => 'index'
  map.login 'login', :controller => 'sessions', :action => 'new'
  map.logout 'logout', :controller => 'sessions', :action => 'destroy'



#119-session-based-model

第一种方法

  def create
      ...
      session[:comment_ids] ||= []
      session[:comment_ids] << @comment.id
      ...    
  end

  
  保护的内容,确保只有当前的用户 session,对 edit 可见
  <% if session[:commnet_ids] && session[:comment_ids].include?(comment.id) %>
  ...
  <% end %> 
  
  用session对 update 进行保护
  before_filter :authorize, :only => [:edit, :update]
  def update
    。。。
  end
  
  private  
  def authorize
    unless session[:comment_ids] && session[:comment_ids].include?(params[:id]。to_i) #如果不是这种情况
      。。。
    end
  end

 
 
第二种方法(创建一个model user_session,对原session进行封装)

1、定义user_session.rb
class UserSession
  def initialize(session)
    @session = session
    @session[:comment_ids] ||= []
  end  
  def add_comment(comment)
    @session[:comment_ids] << comment.id
  end  
  def can_edit_comment?(comment)
    @session[:comment_ids].include?(comment.id) && comment.created_at > 15.minutes.ago
  end
end

2、application.rb
private
def user_session
  @user_session ||= UserSession.new(session)
end
helper_method :user_session

3、comment_controller.rb
def create  
  if @comment.save
    user_session.add_comment(@comment)    
    。。。
  end
end

def authorize
  unless user_session.can_edit_comment?(Comment.find(params[:id]))
   。。。
  end
end

<% if user_session.can_edit_comment? comment %>
  。。。
<% end %>




分享到:
评论

相关推荐

    FormsAuthentication 权限验证

    总之,FormsAuthentication是ASP.NET中实现Web应用身份验证的关键组件,而权限验证则确保了只有具备适当权限的用户才能访问特定资源。通过理解并熟练掌握这两个概念,开发者可以构建出安全、可控的Web应用程序。

    普通用户不能su切换到其它用户提示killed,或者无法登录系统

    3. **su命令失败**:使用su命令切换用户时,如果收到“Cannot set process environment”、“killed”或“Authentication is denied”的错误,检查用户权限、环境变量设置和认证机制。确保su命令的执行权限正确,并...

    用户登录、用户管理及权限设置

    在构建Web应用程序时,用户登录、用户管理及权限设置是至关重要的组成部分,它们构成了系统安全性的重要基础。在本文中,我们将深入探讨这些概念,并以ASP.NET框架为例,讲解如何实现这些功能。 首先,用户登录是...

    c#用户权限管理实现

    在IT行业中,用户权限管理是系统安全的重要组成部分,尤其是在企业级应用中,它涉及到数据保护、操作合规性和责任追溯。本项目"用户权限管理实现"是基于C#编程语言和Visual Studio 2010开发环境构建的,旨在提供一个...

    权限的用户登陆

    这可能涉及到定期审核用户权限,或者实现自动化流程,当用户角色变更时自动更新权限。 5. **访问审计**:记录用户登录、操作和退出系统的活动,以便在发生问题时追溯。审计日志有助于发现异常行为和潜在的安全威胁...

    ZTEC600新建账号密码并赋予登录权限

    - 对于敏感操作(如修改用户权限),建议在完成配置后立即执行`do write`命令,以确保配置的持久化。 - 定期审查用户列表及权限分配情况,及时删除不再使用的账号,以减少潜在的安全风险。 通过以上步骤,可以...

    基于SSM框架的用户权限管理

    项目中的"permission"可能指的是权限相关的配置文件、数据库表名或接口名称,这些都与权限管理密切相关。例如,可能有一个名为`permission`的表,存储角色和权限的关联关系;或者存在处理权限分配的API,如`/...

    springBoot+security+mybatis 实现用户权限的数据库动态管理

    在本文中,我们将深入探讨如何使用Spring Boot、Spring Security和MyBatis这三大技术栈来实现用户权限的数据库动态管理。这是一个常见的需求,在许多企业级应用中,动态管理用户权限可以提高系统的灵活性和可扩展性...

    Spring Security 3多用户登录实现一

    - **&lt;authentication-manager&gt;**:配置认证管理器,用于处理用户的登录尝试。 - **** 或 ****:定义用户服务,提供用户信息。 3. **多用户登录实现** - **用户实体(UserDetails)**:Spring Security中的...

    Shiro根据用户权限显示不同的菜单.Shiro根据权限显示指定菜单

    在这个场景中,我们关注的是如何利用Shiro实现根据用户权限动态显示不同的菜单。 首先,理解Shiro的核心概念是关键。在Shiro中,权限分为角色(Role)和权限(Permission)。角色是一组权限的集合,权限则具体描述...

    角色和用户的登录权限操作

    "角色和用户的登录权限操作"这一主题涵盖了几个重要的知识点,包括页面操作控制、用户与角色的登录流程,以及角色与功能的关联。 首先,让我们深入探讨页面添、删、查、改功能的控制。这是权限管理的基础,确保用户...

    springsecurity角色和权限

    当用户尝试登录时,Spring Security创建一个`Authentication`对象,其中包含了用户的身份信息。这个对象包含了`Principal`(通常是`UserDetails`对象)和`Authorities`(角色列表)。 6. **Access Decision ...

    将用户关联到角色和权限

    总结来说,"将用户关联到角色和权限"的实现是一个关键的安全实践,它通过Laravel的"laravel-permission"包提供了一种灵活和强大的方式来管理用户权限。这个包不仅简化了权限分配的流程,也增强了系统的安全性和可...

    用户登录新闻发布系统 a

    用户登录新闻发布系统是Web开发中的一个关键组成部分,它允许用户注册、登录并参与网站的各种功能,如发布新闻、评论和互动。在这个系统中,我们主要关注以下几个核心知识点: 1. **身份验证与授权**:用户登录是...

    JAVA用户权限管理概要设计说明书-外发版

    首先,用户权限管理的核心是身份验证(Authentication)和授权(Authorization)。身份验证是确认用户身份的过程,通常通过用户名和密码、数字证书或生物特征等方式进行。而授权则是决定已认证的用户可以访问哪些...

    BIEE用户权限设计

    ### BIEE用户权限设计详解 #### 一、BIEE权限设计 ##### 1.1 创建并导入外部用户表 在BIEE系统中,为了实现精细化的权限管理,通常需要通过创建并导入外部用户表来实现。这一步骤是整个权限管理体系的基础。 **...

    一个简单的Codeigniter用户登录验证例子程序

    如果用户尝试访问受保护的页面,系统会检查session是否存在,以确认用户权限。 在`Simple-CI-Authentication-master`压缩包中,可能包含以下文件和目录: 1. `application/`:Codeigniter的配置、控制器、模型、...

    用户权限管理系统 asp.net

    用户权限管理涉及用户认证(Authentication)和授权(Authorization)。认证是验证用户身份的过程,而授权则是确定用户可以访问哪些资源。系统可能包括角色管理、权限分配、登录验证、会话管理等功能,确保用户只能...

    5用户组和权限管理.pdf

    用户帐号允许个人用户登录系统并获取其操作所需资源的权限,而组帐号则用于将用户分组,以便于进行统一的资源访问管理。 用户和组管理命令是用于创建、修改和删除用户和组的工具。这些命令包括但不限于:useradd、...

Global site tag (gtag.js) - Google Analytics