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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值