`
qiezi
  • 浏览: 497782 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[RoR] 简单的角色权限检查插件

    博客分类:
  • Ruby
 
阅读更多
代码比较简单:

module ActionController #:nodoc:

  class CheckGroupError 
< ActionControllerError #:nodoc:
    attr_reader :group_name
    def initialize(group_name)
      
@group_name = group_name
    end
  end
  
  class CheckRoleError 
< ActionControllerError #:nodoc:
    attr_reader :role_name
    def initialize(role_name)
      
@role_name = role_name
    end
  end
  
  class Base 
#:nodoc:
    def roles
      []
    end
    
    def groups
      []
    end
    
    def check_roles(
*role_args)
      role_args
.each do |role|
        check_role(role)
      end
    end
    
    def check_groups(
*group_args)
      group_args
.each do |group|
        check_group(group)
      end
    end
    
    def check_group(group)
      raise CheckGroupError
.new(group.to_s) unless groups().include?(group.to_s)
    end
    
    def check_role(role)
      raise CheckRoleError
.new(role.to_s)   unless roles().include?(role.to_s)      
    end
  end
  
end

只需要在ApplicationController中实现roles和groups这2个方法,对数据库模式没有任何限制,只要能保证这2个方法能够得到当前用户的角色和组即可。

有4个check方法可用,可任意使用一个或多个。

简单模拟测试一下:

class ApplicationController < ActionController::Base
  def roles
    
%w(add show)
  end

  def groups
    
%w(users)
  end
end

class TestController < ApplicationController
  def test1
    check_role 
:add
    render_text 
"OK"
  end

  def test2
    check_role 
:add
    check_group 
:users
    render_text 
"OK"
  end

  def test3
    check_groups 
:admin, :users
    render_text 
"OK"
  end

  def test4
    check_roles 
:add, :remove
    render_text 
"OK"
  end
end

其中,test1、test2都会成功,而test3和test4则会失败显示异常,只需要处理rescue_action把它修改为自己的显示页面即可。
分享到:
评论
1 楼 eltonto 2007-04-06  
现在还看不明白,唉

相关推荐

    ror文本编辑插件

    "ror文本编辑插件"显然是一种专为Rails应用设计的工具,旨在提升用户在网页上编辑文本的体验。这个插件可能包含丰富的功能,如富文本编辑、格式化选项、图片上传等,使得内容创建更加便捷和直观。 Ruby on Rails是...

    RoR性能优化经验谈

    RoR(Ruby on Rails)是一种流行的开源Web开发框架,以其高效和简洁的代码著称。然而,随着网站规模的增长,性能优化成为必不可少的环节。在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在...

    ror

    NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696

    ror中文资料

    **Ruby on Rails(简称RoR)中文资料** Ruby on Rails(RoR)是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。RoR强调“约定优于配置”...

    神经网络ror resenet模型

    **神经网络Ror ResNet模型详解** 在深度学习领域,ResNet(残差网络)模型是具有里程碑意义的创新,由He et al.在2015年提出。该模型解决了深度神经网络训练中的梯度消失问题,允许构建非常深的网络结构。而“Ror”...

    RoRBlog 基于RoR的博客系统

    基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。

    初探ROR

    **初探ROR** Ruby on Rails(简称ROR)是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在促进开发过程的简洁性和效率。Ruby on Rails的核心理念是“Don't Repeat ...

    ROR安装必备所有架包

    在Ruby on Rails(ROR)开发环境中,安装和配置正确的依赖包是至关重要的。这个压缩包包含了一系列用于ROR框架的基础组件,但不包括Ruby本身。让我们深入了解一下这些包的作用和重要性。 首先,`actionpack`是Rails...

    ror实例

    Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在提高开发效率并提供简洁、优雅的代码结构。"ror实例"可能指的是在学习或实践中,通过创建...

    RoR News-crx插件

    RoR News-crx插件是一款基于Chrome浏览器的扩展程序,主要设计用于与Project Broomble的JSONp API进行交互,以实现对Link Aggregator服务Broomble的集成和使用。这款插件是英文版本,因此面向的是全球英文用户群体。...

    RoR选题方向—源代码

    Ruby on Rails(RoR)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程。在这个选题方向中,我们主要探讨的是与RoR相关的源代码分析和学习。源代码是...

    Windows 上搭建 ROR环境

    ### Windows上搭建Ruby on Rails(ROR)环境详解 #### 一、引言 随着Web开发技术的不断发展,Ruby on Rails(简称Rails或ROR)作为一种高效、简洁且优雅的Web开发框架,受到了广大开发者的青睐。然而,在Windows...

    RoR中文解决方案(很不错哦)

    描述中提到的“插件”可能是指RoR的一些中文支持插件,这些插件可以帮助开发者更好地处理中文字符集,避免编码错误。同时,它提到了“mysql-front备份文件”,这通常指的是一个用于图形化管理MySQL数据库的工具,...

    ROR环境配置

    总结来说,配置ROR开发环境包括安装Ruby、Rails,创建ROR项目,以及在Eclipse中设置ROR插件和导入项目。在Eclipse中进行ROR开发,可以充分利用其丰富的功能,提升开发效率。理解并熟练运用ROR的MVC架构和相关工具,...

    RoR 培训课程PPT

    ### RoR培训课程PPT知识点概述 #### 一、课程概览与背景介绍 - **课程性质**:本课程为为期五天的Ruby on Rails(简称RoR)入门级培训,适合初学者快速掌握RoR的基本概念和技术要点。 - **讲师信息**:由Peter ...

    freemis 基于ror框架的mis

    4. **社区支持**:RoR拥有庞大的开发者社区,这意味着FreeMIS可以利用众多开源插件和库,以及丰富的文档和教程资源。 5. **安全性**:RoR内置了多种安全机制,如CSRF(跨站请求伪造)防护、XSS(跨站脚本)防护等,...

    ROR绿色最新环境(2013/3/10)

    ROR环境 Ruby version 1.9.3 (java) RubyGems version 1.8.24 Rack version 1.4 Rails version 3.2.12 JavaScript Runtime therubyrhino (Rhino) Active Record version 3.2.12 Action Pack version 3.2.12 ...

Global site tag (gtag.js) - Google Analytics