用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、可以在路由配置里加入:
- map.signup '/signup', :controller => 'users', :action => 'new'
- map.login '/login', :controller => 'sessions', :action => 'new'
- 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'
然后在模板里加入:
- <% 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 %>
<% 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方法来授权,这个方法比较强大。
如在控制器前添加:
require_role "admin"
注意:如果需要在Role和User的连接表添加更详细的内容,则不适合使用roles_users连接表,可新建模型并通过through方法连接User和Role。
相关推荐
在Rails应用中,用户认证和授权是常见的需求,用于保护应用资源的安全。"http_authentication"和"restful-authentication"是两个早期的Rails登录和验证插件,它们为Rails应用提供了基本的身份验证功能。 HTTP基本...
xi4sp6_webi_restful_ws_en
RestFul_Rails_Dev_v_0.1 RestFul_Rails_Dev_v_0.1
RESTFUL_JAVA_WEB_SERVICES_THIRD_EDITION.pdf
Building_RESTful_Python_Web_Services.epub Building_RESTful_Python_Web_Services.epub
RESTFUL_API_设计开发 Spring mvc 支持rest 方式 。
在这个项目“Springboot_restful_api”中,开发者使用了SpringBoot来构建RESTful风格的API,这是一种广泛用于现代Web服务的设计模式,允许客户端和服务器之间通过HTTP协议交换信息。 REST(Representational State ...
RESTful_Web_Services中文版.pdf
- 使用OAuth2或其他认证机制保护API,只允许授权的用户访问。 7. **API文档**: - 提供清晰的API文档,说明每个端点的用途、请求和响应格式、参数等,方便开发者使用。 在"RESTFUL_API"这个文件中,可能包含了...
在这个项目中,开发者使用MyEclipse 10作为集成开发环境,它提供了丰富的工具支持,如代码编辑、调试、部署等功能,便于快速构建和测试CXF RESTful Web服务。Tomcat 7则是一个流行的开源Servlet容器,用于运行Java ...
restful_web_services_chapter3.pdf
此外,还可以学习如何测试RESTful服务,使用工具如curl或Postman进行调用验证。 总的来说,掌握RESTful Java和JAX-RS 2.0有助于你构建更高效、更易于维护的Web服务,适应现代分布式系统的需求。通过实际操作这些源...
RESTful设计的一个关键特性是使用动词和名词来构建URL。例如,`/users`表示用户资源,而`/users/1`表示ID为1的具体用户。对于CRUD(Create, Read, Update, Delete)操作,Rails提供了如下的默认映射: - GET /users...
"技术分享_RESTful_with_Jackson1" 本文主要介绍了使用GlassFish 4...我们讨论了RESTful服务的概念、Jackson库的使用、日期格式的问题和异常处理的重要性。通过本文,我们可以学习如何创建高效、可靠的RESTful服务。
RESTful URL设计是现代Web服务的核心原则之一,它强调资源的表述状态转移,使得API更加清晰、易于理解和使用。本教程将深入探讨如何在Spring 3.0中应用Spring MVC来构造RESTful URL。 首先,了解REST...
RESTful是一种基于HTTP...此外,你还能学习到如何处理错误、验证请求数据、使用JSON格式进行数据交换以及如何进行单元测试。通过实际操作,你可以掌握RESTful API设计的核心原则,并将其应用到自己的Web服务开发中。
RESTful服务以其简洁、高效和可扩展性受到广泛赞誉,使得分布式系统之间的通信变得更为简单。本文将深入探讨RESTful Web Services的核心概念、设计原则以及如何实现它们。 一、REST简介 REST是Roy Fielding博士在...