原文位于:
http://www.sxlee.com/234.html
,建议看原本
以获得更好的阅读效果
视频信息
下载页面:http://railscasts.com/episodes/160-authlogic
内容介绍:不像 restful_authentication 生成一大堆复杂的代码和文件,authlogic
是一个定制性很高的gem。可以依据实际需要产生最少量的代码和文件,并尽量不污染项目代码。当然,这是有代价的,那就是得多费点力气自己配置。本节通过
演示如何配置一个最简单(支持注册,登录和注销)的认证系统,让观者了解这个gem。
笔记内容
一 相关gem
nifty-generators
简介:集成多个有用的rails文件生成脚本(script/generate)
官网:http://github.com/ryanb/nifty-generators/tree/master
安装:sudo gem in nifty-generators
例子:
script/generate nifty_scaffold user login:string email:string new edit –rspec
将生成:
model:user
migration:create_user
controller:users_controller(有 new, create, edit, update )
view:与controller对应
rspec:对应上面的文件
authlogic
简介:一个干净简洁的基于ruby的验证系统
官网:http://github.com/binarylogic/authlogic/tree/master
安装:sudo gem in authlogic
文档:http://rdoc.info/projects/binarylogic/authlogic
各种实际应用的例子:http://github.com/binarylogic/authlogic_example/tree/master
可以参考例子中的“Tutorial on how to create this app and easily setup Authlogic”
,里面提供了很多额外的配置参考信息。
二 authlogic 最小配置
视频里搭建authlogic最基本的功能所需要创建的文件和添加的代码如下所列:
1 model
user
- 需要下面的列:
login
email
crypted_password
password_salt
persistence_token
- user.rb里加入:acts_as_authentic
让其在创建用户时自动校验数据
可以进行更详细的配置,具体见文档 Authlogic::ActsAsAuthentic 的各个子类
user_session
- 无须migration
- 继承自 Authlogic::Session::Base
- UserSession.find 找到的就是当前用户的session
2 controller
users_controller
负责注册和编辑用户
user_session_controller
负责用户登录和登出:
登录:
UserSession.new
(
:login
, :password
)
|
|
注销:
@user_session
= UserSession.find
@user_session
.destroy
|
|
3 view
user:new,edit
user_session:new
4 application helper
#application_controller.rb
def
current_user_session
return
@current_user_session
if
defined
?(
@current_user_session)
@current_user_session
= UserSession.find
end
def
current_user
return
@current_user
if
defined
?(
@current_user)
@current_user
= current_user_session &&
current_user_session.record
end
def
require_user
unless
current_user
store_location
flash
[
:notice
]
= "You must be logged in to access this page"
redirect_to
login_path
return
false
end
end
def
require_no_user
if
current_user
store_location
flash
[
:notice
]
= "You must be logged out to access this page"
redirect_to
users_url
return
false
end
end
def
store_location
session
[
:return_to
]
= request.request_uri
end
def
redirect_back_or_default(
default)
redirect_to
(
session
[
:return_to
]
||
default)
session
[
:return_to
]
= nil
end
|
|
5 routes
map.login
"/login"
, :controller
=>
"user_session"
, :action
=>
"new"
map.logout
"/logout"
, :controller
=>
"user_session"
, :action
=>
"destroy"
map.resources
:users
map.resource
:user_session
, :controller
=>
"user_session"
|
|
三 测试相关
Testunit
参考:Authlogic::TestCase
spec
由于 authlogic 默认没有提供 spec 测试相应的helper,因此得自己写一个,代码如下:
# 新建 spec/test_helper.rb
module
TestHelper
def
TestHelper.included
obj
obj.send
:include
, Authlogic
end
module
Authlogic
def
login_as user
@user_session
= mock(
'user_session'
)
@user_session
.stubs
(
:record
=>
user )
UserSession.stubs
(
:find
)
.returns
(
@user_session)
end
def
logout
@user_session
= nil
UserSession.stubs
(
:find
)
.returns
(
nil
)
end
end
end
# 在spec/spec_helper.rb中添加
require
RAILS_ROOT+
'/spec/test_helper.rb'
|
|
用法:
在有需要的controller测试代码中加入:include TestHelper
RailsCasts
是个关于RubyOnRails的系列视频,每周雷打不动发表一部。
Rails Casts Note
则是博主观看及实践后的相关笔记,着重于:
- 介绍与视频内容相关的资源或应用技巧。
- 记录个人实践过程中遇到的问题及解决方法。
- 提供足够的资料,供使用时快速参考。
分享到:
相关推荐
Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...
gem "mongoid_rails_migrations" 如何使用 创建迁移 $ rails generate mongoid:migration 运行迁移: $ rails db:migrate $ rails db:migrate:down VERSION= $ rails db:migrate:up VERSION= $ rails db:rollback...
Beginning Google Maps Applications with Rails and Ajax: From Novice to Professional
Beginning Google Maps Applications with Rails and Ajax: From Novice to Professional
学习Ruby on Rails 4.0的逐步指南。 它包括针对Ruby 2.0.0的基本教程,是为至少了解另一种编程语言并熟悉HTML的程序员编写的。
Ruby on Rails(简称Rails)是基于Ruby构建的一个开源Web应用框架,遵循模型-视图-控制器(MVC)架构模式,旨在提高开发效率和代码复用。 在Ruby中,方法是实现代码重用的核心机制。Ruby的方法定义简洁,可以有参数...
Rails多站点这个gem为Rails应用程序提供了多数据库支持。 使用其中间件,您可以对应用程序进行分区,以便每个主机名都有自己的数据库。 它提供了一系列用于处理多个数据库的帮助程序,以及一些用于处理这些数据库的...
Ruby on Rails作为一个全栈服务器端框架,提供了一套强大的测试工具和约定,以支持不同类型的测试。单元测试和功能测试是Rails中两种主要的测试类型,它们在目的、范围和实现方式上有所不同。本文将详细探讨Rails中...
本书教您如何使用Ruby on Rails开发和部署真正的,具有工业实力的Web应用程序,Ruby on Rails是为诸如Twitter,Hulu,GitHub和Yellow Pages等顶级网站提供支持的开源Web框架。
Rails 版本这个 gem 与一起使用来跟踪你所有的 Rails 应用程序和它们正在运行的版本。 这为您提供了一个查看所有 Rails 应用程序版本的地方。安装像往常一样,将此行添加到您的应用程序的 Gemfile 并在之后打包: ...
rails-scope Ruby gem,...scope.gemspec安装 # NOTE: Gem name shown below will vary because of version updatesgem install ./rails-scope-0.0.1.gem跑步 # NOTE: If a path is not provided or an output location
创建一个名为 blog 的新 Rails 应用程序。 rails new blog 编辑您的 Gemfile 并添加 gem 'rails-backbone' 安装 gem 并生成脚手架。 bundle install rails g backbone:install rails g scaffold Post title:...
自述 此自述文件通常会记录启动和运行应用程序所需的任何步骤。 您可能想要涵盖的内容: Ruby版系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列、缓存服务器、搜索引擎等) 部署说明… 如果您不...
Rails的设置 Ruby gem通过将ActiveRecord实例的设置作为序列化的Hash存储在单独的数据库表中来处理ActiveRecord实例的设置。 包括命名空间和默认值。 要求 Ruby 2.4或更高版本 Rails 4.2或更高版本(包括Rails 6) ...
rails-docker:Docker Rails环境
graphql-rails-api是一个gem,它提供了生成器,可以以域驱动的设计方式轻松地描述您的graphql API。 需要任何帮助或想要在不和谐中与我交谈:Poilon#5412 安装 通过创建Rails应用 rails new project-name --api ...
提供用于Rails 4.x(及更高版本)资产管道的Sprockets实现。 安装 gem 'sprockets-rails' , :require => 'sprockets/railtie' 或者,如果禁用了Bundler自动请求功能,则在config/application.rb require 'sprockets...
rails_new 经过精心设计的模板,用于构建现代Rails应用 :fire: 在数分钟而不是数小时内开始使用新应用 :automobile: :dashing_away:入门要克隆该存储库并执行以下步骤: 运行rails credentials:edit config/master....
Rails :: Auth Rails / Rack的基于资源的模块化身份验证和授权,旨在支持身份验证和。 描述 Rails :: Auth是一个灵活的库,旨在使用Rack Middleware进行身份验证(AuthN)和授权(AuthZ)。 它将,使用AuthN中间件...