`
liuqiang
  • 浏览: 162668 次
  • 性别: Icon_minigender_1
  • 来自: 华东
社区版块
存档分类
最新评论

用restful_authentication和role_requirement搭建验证授权系统

    博客分类:
  • Ruby
阅读更多
用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代码 复制代码
  1. map.signup '/signup', :controller => 'users', :action => 'new'  
  2. map.login '/login', :controller => 'sessions', :action => 'new'  
  3. map.logout '/logout', :controller => 'sessions', :action => 'destroy'  
map.signup '/signup', :controller => 'users', :action => 'new'
map.login '/login', :controller => 'sessions', :action => 'new'
map.logout '/logout', :controller => 'sessions', :action => 'destroy'

然后在模板里加入:
Java代码 复制代码
  1. <% if logged_in? %>      
  2.   <p><strong>你以<%=h current_user.login %>的身份登录</strong></p>   
  3.   <p><%= link_to '注销', logout_path %></p>   
  4. <% else %>   
  5.   <p><strong>你还没有登录。</strong></p>   
  6.   <p>   
  7.     <%= link_to '登录', login_path %> or   
  8.     <%= link_to '注册', signup_path %>   
  9.   </p>   
  10. <% end %>  
<% if logged_in? %>   
  <p><strong>你以<%=h current_user.login %>的身份登录</strong></p>
  <p><%= link_to '注销', logout_path %></p>
<% else %>
  <p><strong>你还没有登录。</strong></p>
  <p>
    <%= link_to '登录', login_path %> or
    <%= link_to '注册', signup_path %>
  </p>
<% end %>

看,我们的验证插件已经很好工作了。

注:如果需要更强大验证功能,可查看: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代码 复制代码
  1. require_role "admin"  
require_role "admin"


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

相关推荐

    关于Rails登录和验证插件http_authentication restful-authentication

    在Rails应用中,用户认证和授权是关键的安全组件,确保只有经过验证的用户才能访问受保护的资源。本篇文章将深入探讨两个常用的Rails登录和验证插件——`http_authentication`和`restful-authentication`。 `...

    Python库 | restful_dj-0.6.2-py3-none-any.whl

    4. **权限管理**:RESTful服务通常需要对访问进行控制,restful_dj可能提供了一套权限验证机制,以确保只有授权的用户才能访问特定资源。 5. **错误处理**:对于常见的HTTP错误,restful_dj可能会有相应的错误处理...

    PyPI 官网下载 | flask_restful_helper-1.3.7-py3-none-any.whl

    5. **Python库**:`flask_restful_helper`是一个Python的第三方库,提供了额外的功能,可被其他Python项目导入和使用。 `flask_restful_helper`库的核心功能可能包括: - 提供简洁的API定义方式,使开发者能快速...

    Building_RESTful_Python_Web_Services.epub

    Building_RESTful_Python_Web_Services.epub Building_RESTful_Python_Web_Services.epub

    Springboot_restful_api

    在这个项目“Springboot_restful_api”中,开发者使用了SpringBoot来构建RESTful风格的API,这是一种广泛用于现代Web服务的设计模式,允许客户端和服务器之间通过HTTP协议交换信息。 REST(Representational State ...

    Webapi_JWT_Authentication-master_webapi_jwt_token_

    JWT令牌提供了一种轻量级的方式来进行身份验证和授权,它允许服务器在客户端之间安全地传递信息,而无需存储会话状态。在本项目"Webapi_JWT_Authentication-master"中,我们将探讨如何实现这一机制。 首先,WebAPI...

    RESTFUL_API代码

    - 使用OAuth2或其他认证机制保护API,只允许授权的用户访问。 7. **API文档**: - 提供清晰的API文档,说明每个端点的用途、请求和响应格式、参数等,方便开发者使用。 在"RESTFUL_API"这个文件中,可能包含了...

    cxf_restful_webservice

    在这个项目中,开发者使用MyEclipse 10作为集成开发环境,它提供了丰富的工具支持,如代码编辑、调试、部署等功能,便于快速构建和测试CXF RESTful Web服务。Tomcat 7则是一个流行的开源Servlet容器,用于运行Java ...

    swagger-ui-master.zip_Swagger favicon.ico_restful_restful api_sw

    Swagger UI 是一个强大的工具,用于展示和测试RESTful API。这个"swagger-ui-master.zip"文件包含的是Swagger UI的源代码,使得开发者能够自定义和集成到自己的项目中,以提供API文档和交互式测试功能。Swagger是...

    xi4sp6_webi_restful_ws_en.pdf

    为了调试和解决使用RESTful Web服务时可能遇到的问题,可以激活追踪日志。具体步骤如下: 1. 打开BI平台的管理控制台。 2. 寻找“跟踪”或“日志”相关设置选项。 3. 启用日志记录,并选择适当的日志级别(如DEBUG)...

    ice-frame-restful.zip_ICE_restful_微服务

    4. 测试接口:可以使用curl命令行工具或Postman等软件对接口进行测试,验证接口的正确性和性能。 通过学习和实践这个示例项目,开发者不仅可以了解ICE框架的基础用法,还能深入理解RESTful接口设计的最佳实践。此外...

    restful_java_jax-rs_2_0-master 学习restful 必备

    此外,还可以学习如何测试RESTful服务,使用工具如curl或Postman进行调用验证。 总的来说,掌握RESTful Java和JAX-RS 2.0有助于你构建更高效、更易于维护的Web服务,适应现代分布式系统的需求。通过实际操作这些源...

    RestFul_Rails_Dev_pdf_v_0.1.zip

    RESTful设计的一个关键特性是使用动词和名词来构建URL。例如,`/users`表示用户资源,而`/users/1`表示ID为1的具体用户。对于CRUD(Create, Read, Update, Delete)操作,Rails提供了如下的默认映射: - GET /users...

    golang_gin_restful_api.pdf

    本文档介绍了一本名为《golang_gin_restful_api.pdf》的小册子,该小册详细介绍了使用Go语言和Gin框架构建RESTful API服务的过程。Gin是一个高性能的Go(golang)语言编写的Web框架,专门用于API服务的构建,它提供...

    技術分享_RESTful_with_Jackson1

    "技术分享_RESTful_with_Jackson1" 本文主要介绍了使用GlassFish 4...我们讨论了RESTful服务的概念、Jackson库的使用、日期格式的问题和异常处理的重要性。通过本文,我们可以学习如何创建高效、可靠的RESTful服务。

    微信小程序_电话簿_python3.6+flask后端_restful_风格api_WaiMaiDianHuaBu.zip

    微信小程序_电话簿_python3.6+flask后端_restful_风格api_WaiMaiDianHuaBu

    RESTFUL_JAVA_WEB_SERVICES_THIRD_EDITION.pdf

    《RESTful Java Web Services 第三版》是一本深入探讨如何使用Java设计和构建RESTful API的实践指南。作者Bogunuva Mohanram Balachandar是一位在知名美国跨国公司工作的副董事,该公司专注于数字、技术和运营服务。...

    RESTFUL_API_设计开发

    5. **分层系统**:允许将系统划分为多个层次,每个层次只与相邻的上下层进行通信,提高了系统的可伸缩性和安全性。 6. **按需代码**:虽然不是 REST 的必需特性,但在某些情况下可以通过服务器向客户端提供代码执行...

Global site tag (gtag.js) - Google Analytics