建立一个典型的RubyOnRails网站(三)

 第三部分,权限设计和acl插件的使用。感觉这样的权限设计也是很主流的。

  下面,再看看EOL.ORG在权限设计方面是如何实现的,或者使用了什么插件。

  用户角色设计和权限管理

  EOL.org的权限部分采用acl_system plugin的插件,地址如下

  http://brainspl.at/articles/2006/02/20/new-plugin-acl_system

  机制如下:

  用户可以分配零个或多个角色

  一个或多个Controller可以隶属于一个角色

  那么,保证权限正确限制,可以从以下几个方面实现:

  1. 保证用户必须登录才能访问特定的action或contoller。那么只需要添加如下语句在controller的开始:

  Ruby代码   

 

     before_filter :check_authentication

 

  这段检查并不是角色有关的检查,只是简单的提供登录限制。

  2. 实现特定的用户访问特定的controller。那么需要在指定的controller,添加

  Ruby代码  

 

     access_control :DEFAULT => 'ROLE NAME GOES HERE'

 

  这一个检查,将针对用户的角色(即分配给user的role)来限制controller的读取。如果,想了解很进一步的有关机制,可以查阅我们使用的plugin(acl_system2)的README说明文档。那里的例子还不错。

  3. 项目还提供很方便的controller/helper 方法用来检查user是否隶属于某一特定角色或者角色群。("is_user_in_role?"

  )

  Ruby代码  

 

     do_this_method_only_for_admins if is_user_in_role?('Administrator')

 

  4. 项目本身也支持对页面的某一特定的代码段或页面功能段,进行权限设定。这需要调用acl 插件的helper方法对该代码段添加基于用户权限的修饰。例如:

<% restrict_to "(Administrator) & !blacklist" do %> admin stuff here <% end %>

 

  管理功能的实现

  管理功能是在用户权限设计的基础上,增加一个管理功能:

  1.所有管理功能的controller都在administrator目录下创建。管理权限的第一次限制

  Ruby代码  

 

Administrator::NewContollerName

 

  2. 对于的功能将从生成的Controller下派生

  Ruby代码   

 

 class Administrator::NewContollerName < AdminController

 

  3. 相对应的试图页面在administrator目录下 "views/administrator",

  Ruby代码  

 

views/administrator/new_controller_name

 

  4. 根据需要,在适当的时候,可以添加新的管理角色

  5. 在管理页面的controller最开始增加限制

  Ruby代码  

 

     access_control :DEFAULT => 'ROLE NAME GOES HERE'

 

  这将用于保证只有拥有管理角色的用户才能访问administrator目录下的controller

  6. 通过在管理界面的导航栏添加菜单,以便增加到新controller的连接。修改如下文件

  Ruby代码   

 

 "views/admin/_navigation.html.erb"

 

  则所有页面导航的连接,将直接受到上一步我们设置的限制。

  7.保证至少有一个用户有控制和登录管理界面的权限。不能删除最后的管理用户,否则系统将没有管理功能。

  日志系统设计

  日志的功能通过类似数据采集系统的方式实现。在config/database.yml文件中,定义的独立的数据库,用来保持所有的日志信息。对Models的日志和对于用户行为操作的记录,被分为两类数据表 dimension和facts。鉴于效率和数据大小的考虑,项目中数据库没有进行更多的授权访问设置。在产品模式下,将会有严格的保护措施,以便不会误删数据。可是在开发模式,就有很多对应的开发和模拟数据方法,如下:

 

  Ruby代码

 

  rake logging:clear						           # Deletes all logging-related records. (特别注意: prodution 模式不能执行)
  rake logging:dimension:mock THOUSANDS=2	 # 创建 2,000 随机模拟日志数据
  rake logging:geocode:all					       # Performs geocoding on the primary data, using caches where possible.
  rake logging:fact:all						         # Derives secondary data from primary data.

 

  或者这时也可以通过一句命令实现以上操作

  Ruby代码

 

  script/runner script/logging_mock

 

  项目同样支持cron的定时操作,对特定时间区间进行日志操作,如下:

  Ruby代码

 

   rake logging:fact:today
   rake logging:fact:yesterday
   rake logging:fact:range FROM='01/15/2007' TO='12/19/2008'

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值