`
lzqustc
  • 浏览: 209880 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Rails认证系统插件: Restful Authentication

阅读更多

简介

Restful Authentication插件为你生成一个REST风格的认证系统模板,除了支持最基本的用户管理和认证功能外,还有一个可选的邮件激活功能。

作者:Rick Olson
许可: Rails’ (MIT)
SVN仓库:http://svn.techno-weenie.net/projects/plugins/restful_authentication/

安装

./script/plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication/

使用

1. 生成框架代码 ./script/generate authenticated user sessions --include-activation

这将会生成一个model,以及两个controller:

· models/user.rb,保存用户的登录信息

· controllers/users_controller.rb,提供简单的用户管理功能

· controllers/sessions_controller.rb,提供用户认证支持

–include-activation参数决定是否生成向新注册用户发送激活码的代码(一般不需要)。

 

2. 这一步是可选的,如果你想你的URL看起来更符合惯例一些,那么在route.rb中添加:      

map.signup '/signup', :controller => 'users', :action => 'new'
map.login '/login', :controller => 'sessions', :action => 'new'
map.logout '/logout', :controller => 'sessions', :action => 'destroy'

如果你还想实现:当用户输入http://localhost:3000/系统直接显示登录界面,那么你要删除./public/index.html文件,然后在路由里添加:

map.connect '/', :controller => 'sessions', :action => 'new'

 

3. 在你的系统入口添加认证,比如系统入口为公司的index页面,那么就在CompanyController的index方法里添加验证,方法如下:

class CompaniesController < ApplicationController

  include AuthenticatedSystem

  before_filter :login_required

  def  index

    if  defined?(current_user)  and  ( not current_user.nil?)   then

      @companies = Company.find(:all)

      respond_to do |format|

        format.html # index.html.erb

        format.xml  { render :xml => @companies }

      end 

else       

   redirect_to new_session_path

    end

 end

 ..............

end

那么当你第一次在地址栏里输入http://localhost:3000/companies 时系统将自动跳转到

http://localhost:3000/session/new,也就是登录界面,输入用户名、密码后点击登录,如果页面没有跳转,那么你需要修改User(Model)的验证方法authenticate,修改成如下内容:

 

def self.authenticate(login, password)

原代码如下,涉及到 activated_at IS NOT NULL,即第1步生成框架时使用了参数 

#–include-activation 的缘故,可能造成验证不成功

# u = find :first, :conditions => ['login = ? and activated_at IS NOT NULL', login]

    #修改后的代码如下

    u = find_by_login(login)       # need to get the salt

    u && u.authenticated?(password) ? u : nil

end

 

4. 控制验证成功后页面跳转的位置:修改SeesionController,找到 redirect_back_or_default('/'),将其修改为你的首页,如redirect_back_or_default('/companies'),这样验证成功后将跳转到conpany列表。

 

5. 参考资料 http://www.letrails.cn/archives/52 

<!--EndFragment-->
分享到:
评论

相关推荐

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

    "http_authentication"和"restful-authentication"是两个早期的Rails登录和验证插件,它们为Rails应用提供了基本的身份验证功能。 HTTP基本认证(http_authentication)是HTTP协议的一部分,基于HTTP头部进行身份...

    RESTful.Rails.Development.2015.10.pdf

    根据提供的文件信息,我们可以推断出这是一本关于如何使用Ruby on Rails框架来构建RESTful应用程序和服务的专业书籍。书名为《RESTful Rails Development》,作者为Silvia Puglisi,出版时间为2015年10月。接下来,...

    Rails 3 in Action

    - 令牌认证(token authentication)。 - 外部服务集成,如 OAuth。 #### 七、文件上传 第九章讨论了 **文件上传** 的实现方式,这是 Web 应用中常见的功能之一。 - **文件上传**: - 实现用户可以上传图片、文档...

    使用rails6开发纯后端API项目.zip

    Rails的路由系统支持RESTful模式,如`resources :users`会自动创建CRUD操作的路由。 3. **JSON响应** Rails 6默认使用JBuilder或ActiveModelSerializers来生成JSON响应。例如,为用户模型创建一个简单的序列化器:...

    ruby on rails 的小型内容管理系统

    rails2.0的内容管理系统,可以发布文档、CVS库和Web资源3中资源,其中文档可以上传下载附件。支持打Tag。用户注册登录使用restful_authentication,分页使用will_paginate,Gem版本1.3.5

    Pragmatic.Bookshelf.Advanced.Rails.Recipes.May.2008

    7. **Authentication and Authorization**:讲解了实现用户认证和权限控制的各种方法,如Devise、CanCanCan等,确保应用的安全性。 8. **RESTful Design**:REST(Representational State Transfer)是一种架构风格...

    Gobble:Gobble是一个受Slack启发的全栈单页消息传递应用程序。 它在后端使用Ruby on Rails生成RESTful API,在前端使用ReactRedux,并使用Pusher无缝实现WebSockets

    它在后端使用Ruby on Rails生成RESTful API,在前端使用React / Redux,并使用Pusher无缝实现WebSockets。 特征 使用Devise通过自动演示登录进行用户身份验证 即时通讯 讯息格式 通知事项当前频道通知 频道数 直接...

    一个简单的在线投票系统

    4. **用户认证与授权**:为了确保投票公正性,系统可能实现了用户登录功能,涉及身份验证(Authentication)和授权(Authorization)。这可能涉及到OAuth2、JWT(JSON Web Tokens)或其他安全机制,确保只有合法用户...

    meetingzero_api:MeetingZero Rails API

    6. **认证与授权(Authentication & Authorization)**: MeetingZero API 可能会使用如Devise这样的库进行用户认证,而Pundit或CanCanCan则用于控制不同用户对资源的访问权限。 7. **错误处理(Error Handling)**...

    网站后台管理系统

    3. **认证与授权**:为了保护系统安全,后台管理需要实现用户认证(Authentication)和授权(Authorization)。认证通常涉及用户名和密码验证,而授权则确定用户能访问哪些资源或执行哪些操作。Spring Security、JWT...

    angular_practice:这是练习使用Angular和Rails

    8. **Authentication & Authorization**:在实际项目中,你可能会遇到用户认证和授权的问题。JWT(JSON Web Tokens)或OAuth2可能是实现这些功能的常见选择。 9. **Testing**:Angular和Rails都支持集成测试、单元...

    主播电台管理后台.docx

    3. **RESTful API设计**:为了使前端(可能是网页或移动应用)能够与后台交互,后台需要提供RESTful API接口。这些接口遵循统一的HTTP方法(GET、POST、PUT、DELETE等),允许前端进行数据获取、提交、更新和删除...

    后台管理框架

    - 认证与授权:内置的用户认证系统,如Spring Security或Django的Authentication,帮助开发者轻松实现用户登录、权限控制等功能。 - MVC模式:遵循MVC架构,将业务逻辑、数据和界面分离,提高代码可读性和可维护性。...

    新闻发布系统源代码.........

    1. **Web框架**:新闻发布系统的开发通常基于某个Web框架,如Spring Boot、Django、Ruby on Rails或ASP.NET。这些框架提供了一种结构化的开发方式,简化了HTTP请求处理、数据库交互和模板渲染等任务。 2. **数据库...

    RailsAPI

    8. **认证与授权(Authentication & Authorization)**:为了保护API,需要实现认证和授权机制。常见的方案有Token-based认证(如JWT)和OAuth2。 9. **限速(Rate Limiting)**:限制客户端对API的访问频率是防止...

Global site tag (gtag.js) - Google Analytics