免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1642 | 回复: 0
打印 上一主题 下一主题

用restful_authentication和role_requirement搭建验证授权系统 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-20 14:53 |只看该作者 |倒序浏览
转自
http://fanix.javaeye.com/blog/177508
用rails做验证和授权系统并不复杂,但通过安装插件的方式可以减少重复劳动。
restful_authentication是一个验证系统,支持rails2.0,提供了简单的用户注册登录注销、简单的验证等功能。
role_requirement是授权系统,能和restful_authentication很好的结合,该插件提供了授权的基本实现。
安装和配置:
步骤1:安装restful_authentication
命令行下:
ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication/
ruby script/generate authenticated user sessions
第一步是安装插件。第二步生成文件,里面的user代表生成的模型的名称,可选–include-activation参数决定是否生成向新注册用户发送激活码的代码。
步骤2:安装role_requirement
ruby script/plugin install http://rolerequirement.googlecode.com/svn/tags/role_requirement/
ruby script/generate roles Role User
第一步安装插件,第二步是生成文件结构并设置角色和用户之间的多对多关系。
这样,两个插件就基本安装配置完了,还需要修改一些东西:
1、由于一开始生成的restful_authentication的模型是user,在user.rb模型文件里,注释掉“attr_protected :roles”,因为会和“attr_accessible”发生冲突(这两个方法是黑名单和白名单的作用,只能用一个)。
2、可以在路由配置里加入:
Java代码

  • map.signup '/signup', :controller => 'users', :action => 'new'  
  • map.login '/login', :controller => 'sessions', :action => 'new'  
  • map.logout '/logout', :controller => 'sessions', :action => 'destroy'  
    然后在模板里加入:
    Java代码

  • if logged_in? %>      
  •   你以的身份登录   
  •   '注销', logout_path %>   
  • else %>   
  •   你还没有登录。   
  •      
  •     '登录', login_path %> or   
  •     '注册', signup_path %>   
  •      
  •   
    看,我们的验证插件已经很好工作了。
    注:如果需要更强大验证功能,可查看:http:
    //www.rubyplus.org/episodes/20-Extended-RESTful-Authentication-Rails-2-App.html,
    这个增强版的插件包含了邮件激活、修改密码、忘记密码等功能。但是修改密码和忘记密码存在安全隐患,请修改后使用。
    3、由于
    role_requirement插件生成的文件不全,可以用scaffold命令重新生成role的缺失文件。在role.rb里加上了
    has_and_belongs_to_many
    :users。scaffold好后,添加一个新的角色“admin”,然后通过调用“role.users”来给“admin”添加成员。这样我们就可
    以来使用require_role方法来授权,这个方法比较强大。
    如在控制器前添加:
    Java代码

  • require_role "admin"  
    注意:如果需要在Role和User的连接表添加更详细的内容,则不适合使用roles_users连接表,可新建模型并通过through方法连接User和Role。
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25407/showart_1933733.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP