`
hideto
  • 浏览: 2683139 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Rails宝典之六十七式:restful_authentication

    博客分类:
  • Ruby
阅读更多
restful_authentication是Rails的一个认证插件,基于REST方式,适合RESTful的geek

安装:
ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication/
ruby script/generate authenticated users sessions


可选择性的修改routes:
# routes.rb
ActionController::Routing::Routes.draw do |map|
  map.home '', :controller => 'home', :action => 'index'

  map.resources :users
  map.resource  :session
  map.signup '/signup', :controller => 'users', :action => 'new'
  map.login  '/login', :controller => 'session', :action => 'new'
  map.logout '/logout', :controller => 'session', :action => 'destroy'
end


一些helper方法:
<!-- home/index.rhtml -->
<h1>Welcome</h1>

<% if logged_in? %>
  <p><strong>You are logged in as <%=h current_user.login %></strong></p>
  <p><%= link_to 'Logout', logout_path %></p>
<% else %>
  <p><strong>You are currently not logged in.</strong></p>
  <p>
    <%= link_to 'Login', login_path %> or
    <%= link_to 'Sign Up', signup_path %>
  </p>
<% end %>
分享到:
评论
8 楼 chvek 2010-04-30  
ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication/

总是提示 Plugin not found: ["http://svn.techno-weenie.net/projects/plugins/restful_authentication/"]

是怎么回事呢?
6 楼 kenrome 2009-01-09  
restful_authentication生成的路由:
map.resources :users

map.resource :session

这个到底有什么区别?一个是resources,一个是resource
5 楼 hideto 2008-06-18  
又发现一个remember_me的陷阱,如果使用:
<%= check_box_tag 'remember_me' %>

则生成的html为:
<input type="checkbox" value="1" name="remember_me" id="remember_me"/>

这里的value='1'是有用的,需要在sessions_controller.rb的create方法里使用:
if params[:remember_me] == "1"
        current_user.remember_me unless current_user.remember_token?
        cookies[:auth_token] = { :value => self.current_user.remember_token , :expires => self.current_user.remember_token_expires_at }
      end
4 楼 hideto 2008-06-16  
如果需要remember me功能的话,修改一下restful_authentication生成的app/view/sessions/new.html.erb:
<!-- Uncomment this if you want this functionality
<p><label for="remember_me">Remember me:</label>
<%= check_box_tag 'remember_me' %></p>
-->

将上面的html注释comment out即可
3 楼 hideto 2008-06-16  
要使用current_user和logged_in? helper方法的话需要修改ApplicationController:
class ApplicationController < ActionController::Base
  include AuthenticatedSystem

  # ...
end
2 楼 hideto 2007-10-23  
http://active-rbac.rubyforge.org/
1 楼 weskycn 2007-10-23  
如果要基于角色,该如何使用呢,有没有相关的资料?

相关推荐

Global site tag (gtag.js) - Google Analytics