- 浏览: 2076748 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
update(2010-8-31)
如果,在2.3版本的rails上运行,发现如下类似错误
请参考devise在Rails 3和Rails 2的命令不一样
在我们之前的文章中我们已经介绍了一些登录和验证授权的解决方案,现在我们来介绍另外一个。最近,在ruby社区Devise越来越广泛的被采用来解决维护权限和验证。Devise源于Warden,而warden是一个基于Rack的验证权限gem,不过,使用devise实际并不需要任何关于warden的知识。
如果你之前有一些其他类似的维护验证权限功能的gem的使用经验的话,你会发现Devise的和他们的不同之处在于,提供了从页面到model的实现。相比而言,例如Authlogic就只实现了丢与model层的实现,这时你就要自己去处理view层实现。而Devise是基于Rails 引擎开发的所以就可以同时提供controllers和view的实现。从功能角度来看,Devise提供了11个方面的在维护和验证权限过程的功能模块,这些模块都是可配置的。例如,其中Rememberable模块是使用cookie保存用户的登录信息,Recoverable是用来处理用户重置口令的。可定制的模块使用可以很容易的根据自己的业务需求配置对应的相应功能模块。
给项目添加权限验证系统
那么,我们就通过一个实例来看看Devise是在项目中是如何使用的。下面的截图是一个用Rails3.0写的简单的项目管理应用。 Devise将会添加一个User model和提供权限控制功能。
Devise可以很好的支持Rails 3 和Rails 2.3 在低的版本就不能支持了。而且,针对不同的Rails版本,我们需要选择不同的devise版本。Rails 3需要安装 Devise 1.1.rc0, 而rails2.3需要1.0.6。
那么,我们的项目是Rails3的就要应该把devise 的gem版本信息注明到gemfile里,如下:
有了这个声明,我们就可以通过bundle来安装需要的gem和gem需要的依赖包了。
接下来一步是通过generate安装devise相关代码。
运行上面的命令会产生一些文件,包括config initializer下的初始化devise文件,和config/local下的i18n显示消息输出的文件。下面提示的是两个需要手动执行的操作,一个是为应用配置email host。另外,一个是在route下配置root的路由。演示项目中默认的根路由已经配置了,就不用再配。但devise发邮件用email的主机还需要配置,也很简单因为我们是开发环境,直接拷贝提示就行。
这个配置的意思似乎把localhost做为接发邮件的主机,如果,项目上线,在生产环境就需要在production中把action_mailer的host配置成域名。
生成devise的User Model
Devise会使用User Model来控制和权限,而且,Devise提供了generator来生产User Model, 当然这个generato只是节省时间,并不是必须运行的,手动生成User model完全可以。
运行generator会生成一个model文件,一个migration文件和一个devise_for的路由。我们下面将一个一个来看看这些文件的作用。
下面是generator生成的User Model:
我们可以看到User model和普通的ActiveRecord的区别并不大,主要的差别是调用了devise方法,当然这也是配置的关键。Devise方法有很多的参数用来标识是否使用对应的功能模块。比如,我们在前文说过的:rememberable和:recoverable功能模块。所以,正如我们看到的,devise就是用这样简单的方式来配置是否使用相对应的功能模块。就是说,如果我们不想要确认password的功能,我们只是需要把对应的confirmable从这里删除就可以了。
同时,User类中还有attr_accessible方法,是用来描述可能用到的User表字段。也就是,如果我们需要在Model以为使用这个属性,那么,就要标识清楚是否需要只读还是读写权限。
接下来,我们看看生产的migration文件:
数据库的migration文件就很容易理解了,和普通的migration文件完全相同,标识user都会有什么字段。值得一提的是,表的字段和我们刚才的配置也有关系就是如果我们没有配置对应的功能模块,也就应该删除相对应的字段,和对应的索引。
Now that we’ve modified the migration to suit the modules we want to use we can run the database migration.
那么,修改完我们需要的migration文件就可以执行migration真正生成对应的数据库结构。通过运行下面命令生成:
接下来,我们看看generator在router.rb文件中的devise_for都产生了什么路由.我们可以通过rake routes查看:
稍微有点乱,当然,我们还是可以看出来,产生了如下路由:登录,登出,重置密码,注册,和修改。如果我们需要,所有这些路由都是可以配置的。
那么,有了这些路由我们就可以通过制定的描述,来访问对应的功能模块了。比如,我们应该通过访问/users/sign_up的路径来调用注册模块。
那么如果我们通过这个界面,我们完成注册,就会默认已经登录。这时,我们也可以通过/users/sign_out来登出。当然,如果这时我们再次试图通过访问/users/sign_in来登录,并输入刚才注册的用户名和口令。我们就会发现下面的错误:
这实际是一个Rails 3.0 beta 2的问题,如果,我们看到这个错误,可以通过修改 /config/initializers/cookie_verification_secret.rb中的secret key来修正。其中,secret key是用来验证登录cookies的。
我们需要做的就是在这个文件中删除相关描述,并且/config/application.rb文件中删除Rails.application的部分,如下:
重启后,我们应该可以正常登录。
实际上,到目标我们已经完成了所有的验证权限的功能。接下来,我们可以进行一些改进。通常我们都愿意在页面上方显示用户是否已经登录的状态。如果登录就显示用户的一点信息,如果没有登录就显示登录和注册。
这样的需要很容易实现,我们可以在application的layout中添加对应的输出信息,以便在每个页面都可以看到同样的登录信息。如下:
简单解释一下,这段显示登录信息的代码。这段代码主要是通过devise提供的方法实现,其中,判断是否登录是通过 user_signed_in? 如果登录了,就通过current_user来显示当前用户的email,而退出的路径是devise通过 destroy_user_session标识到/users/sign_out。同样,如果没有登录的话,可以通过 new_user_registration_path 和 new_user_session_path 分别表示注册和登录的路径。那么,当我们把代码写好,刷新页面就可以看到对应的信息了。
如果我们点击sign out的链接,我们应该看到注册和登录链接。
正如我们上面操作的,通过使用devise,添加很少的代码就可以拥有注册,登录,退出的功能。当然,devise还有更多的相关功能也相当容易上手使用。比如,重新设置密码的功能模块,也是在User的model里加上confirmable就可以拥有对应的功能。
最后,可能我们会想到一个问题。因为,所有的登录,权限相关的界面也都是devise生成的,那么,如果,我们希望页面风格和我们自己的网站的风格一致,怎么办?实际上,devise也考虑到了这一点,提供了很容易的定制devise的途径,我们将在下一篇中介绍。
如果,在2.3版本的rails上运行,发现如下类似错误
引用
$./script/generate devise:install
Couldn't find 'devise:install' generator
$./script/generate devise:views users
Couldn't find 'devise:install' generator
Couldn't find 'devise:install' generator
$./script/generate devise:views users
Couldn't find 'devise:install' generator
请参考devise在Rails 3和Rails 2的命令不一样
$ruby script/generate devise_install $ruby script/generate devise User $ruby script/generate devise_views
在我们之前的文章中我们已经介绍了一些登录和验证授权的解决方案,现在我们来介绍另外一个。最近,在ruby社区Devise越来越广泛的被采用来解决维护权限和验证。Devise源于Warden,而warden是一个基于Rack的验证权限gem,不过,使用devise实际并不需要任何关于warden的知识。
如果你之前有一些其他类似的维护验证权限功能的gem的使用经验的话,你会发现Devise的和他们的不同之处在于,提供了从页面到model的实现。相比而言,例如Authlogic就只实现了丢与model层的实现,这时你就要自己去处理view层实现。而Devise是基于Rails 引擎开发的所以就可以同时提供controllers和view的实现。从功能角度来看,Devise提供了11个方面的在维护和验证权限过程的功能模块,这些模块都是可配置的。例如,其中Rememberable模块是使用cookie保存用户的登录信息,Recoverable是用来处理用户重置口令的。可定制的模块使用可以很容易的根据自己的业务需求配置对应的相应功能模块。
给项目添加权限验证系统
那么,我们就通过一个实例来看看Devise是在项目中是如何使用的。下面的截图是一个用Rails3.0写的简单的项目管理应用。 Devise将会添加一个User model和提供权限控制功能。
Devise可以很好的支持Rails 3 和Rails 2.3 在低的版本就不能支持了。而且,针对不同的Rails版本,我们需要选择不同的devise版本。Rails 3需要安装 Devise 1.1.rc0, 而rails2.3需要1.0.6。
那么,我们的项目是Rails3的就要应该把devise 的gem版本信息注明到gemfile里,如下:
gem 'devise', '1.1.rc0'
有了这个声明,我们就可以通过bundle来安装需要的gem和gem需要的依赖包了。
bundle install
接下来一步是通过generate安装devise相关代码。
$ rails generate devise_install create config/initializers/devise.rb create config/locales/devise.en.yml =============================================================================== Some setup you must do manually if you haven't yet: 1. Setup default url options for your specific environment. Here is an example of development environment: config.action_mailer.default_url_options = { :host => 'localhost:3000' } This is a required Rails configuration. In production is must be the actual host of your application 2. Ensure you have defined root_url to *something* in your config/routes.rb. For example: root :to => "home#index" ===============================================================================
运行上面的命令会产生一些文件,包括config initializer下的初始化devise文件,和config/local下的i18n显示消息输出的文件。下面提示的是两个需要手动执行的操作,一个是为应用配置email host。另外,一个是在route下配置root的路由。演示项目中默认的根路由已经配置了,就不用再配。但devise发邮件用email的主机还需要配置,也很简单因为我们是开发环境,直接拷贝提示就行。
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
这个配置的意思似乎把localhost做为接发邮件的主机,如果,项目上线,在生产环境就需要在production中把action_mailer的host配置成域名。
生成devise的User Model
Devise会使用User Model来控制和权限,而且,Devise提供了generator来生产User Model, 当然这个generato只是节省时间,并不是必须运行的,手动生成User model完全可以。
$ rails generate devise User invoke active_record create app/models/user.rb invoke test_unit create test/unit/user_test.rb create test/fixtures/users.yml inject app/models/user.rb create db/migrate/20100412200407_devise_create_users.rb route devise_for :users
运行generator会生成一个model文件,一个migration文件和一个devise_for的路由。我们下面将一个一个来看看这些文件的作用。
下面是generator生成的User Model:
class User < ActiveRecord::Base # Include default devise modules. Others available are: # :token_authenticatable, :lockable, :timeoutable and :activatable # :confirmable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation end
我们可以看到User model和普通的ActiveRecord的区别并不大,主要的差别是调用了devise方法,当然这也是配置的关键。Devise方法有很多的参数用来标识是否使用对应的功能模块。比如,我们在前文说过的:rememberable和:recoverable功能模块。所以,正如我们看到的,devise就是用这样简单的方式来配置是否使用相对应的功能模块。就是说,如果我们不想要确认password的功能,我们只是需要把对应的confirmable从这里删除就可以了。
同时,User类中还有attr_accessible方法,是用来描述可能用到的User表字段。也就是,如果我们需要在Model以为使用这个属性,那么,就要标识清楚是否需要只读还是读写权限。
接下来,我们看看生产的migration文件:
class DeviseCreateUsers < ActiveRecord::Migration def self.up create_table(:users) do |t| t.database_authenticatable :null => false # t.confirmable t.recoverable t.rememberable t.trackable # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both t.timestamps end add_index :users, :email, :unique => true # add_index :users, :confirmation_token, :unique => true add_index :users, :reset_password_token, :unique => true # add_index :users, :unlock_token, :unique => true end def self.down drop_table :users end end
数据库的migration文件就很容易理解了,和普通的migration文件完全相同,标识user都会有什么字段。值得一提的是,表的字段和我们刚才的配置也有关系就是如果我们没有配置对应的功能模块,也就应该删除相对应的字段,和对应的索引。
Now that we’ve modified the migration to suit the modules we want to use we can run the database migration.
那么,修改完我们需要的migration文件就可以执行migration真正生成对应的数据库结构。通过运行下面命令生成:
rake db:migrate
接下来,我们看看generator在router.rb文件中的devise_for都产生了什么路由.我们可以通过rake routes查看:
new_user_session GET /users/sign_in {:controller=>"devise/sessions", :action=>"new"} user_session POST /users/sign_in {:controller=>"devise/sessions", :action=>"create"} destroy_user_session GET /users/sign_out {:controller=>"devise/sessions", :action=>"destroy"} POST /users/password(.:format) {:controller=>"devise/passwords", :action=>"create"} user_password PUT /users/password(.:format) {:controller=>"devise/passwords", :action=>"update"} new_user_password GET /users/password/new(.:format) {:controller=>"devise/passwords", :action=>"new"} edit_user_password GET /users/password/edit(.:format) {:controller=>"devise/passwords", :action=>"edit"} POST /users(.:format) {:controller=>"devise/registrations", :action=>"create"} PUT /users(.:format) {:controller=>"devise/registrations", :action=>"update"} user_registration DELETE /users(.:format) {:controller=>"devise/registrations", :action=>"destroy"} new_user_registration GET /users/sign_up(.:format) {:controller=>"devise/registrations", :action=>"new"} edit_user_registration GET /users/edit(.:format) {:controller=>"devise/registrations", :action=>"edit"}
稍微有点乱,当然,我们还是可以看出来,产生了如下路由:登录,登出,重置密码,注册,和修改。如果我们需要,所有这些路由都是可以配置的。
那么,有了这些路由我们就可以通过制定的描述,来访问对应的功能模块了。比如,我们应该通过访问/users/sign_up的路径来调用注册模块。
那么如果我们通过这个界面,我们完成注册,就会默认已经登录。这时,我们也可以通过/users/sign_out来登出。当然,如果这时我们再次试图通过访问/users/sign_in来登录,并输入刚才注册的用户名和口令。我们就会发现下面的错误:
这实际是一个Rails 3.0 beta 2的问题,如果,我们看到这个错误,可以通过修改 /config/initializers/cookie_verification_secret.rb中的secret key来修正。其中,secret key是用来验证登录cookies的。
# Be sure to restart your server when you modify this file. # Your secret key for verifying the integrity of signed cookies. # If you change this key, all old signed cookies will become invalid! # Make sure the secret is at least 30 characters and all random, # no regular words or you'll be exposed to dictionary attacks. Rails.application.config.cookie_secret = '3b161f7668f938d1aeb73e1137964f8d5ebaf32b9173c2130ecb73b95b610702b77370640dce7e76700fb228f35f7865ab2a5ccd22d00563504a2ea9c3d8dffe'
我们需要做的就是在这个文件中删除相关描述,并且/config/application.rb文件中删除Rails.application的部分,如下:
require File.expand_path('../boot', __FILE__) require 'rails/all' Bundler.require(:default, Rails.env) if defined?(Bundler) module ProjectManage class Application < Rails::Application config.filter_parameters << :password config.cookie_secret = '3b161f7668f938d1aeb73e1137964f8d5ebaf32b9173c2130ecb73b95b610702b77370640dce7e76700fb228f35f7865ab2a5ccd22d00563504a2ea9c3d8dffe' end end
重启后,我们应该可以正常登录。
实际上,到目标我们已经完成了所有的验证权限的功能。接下来,我们可以进行一些改进。通常我们都愿意在页面上方显示用户是否已经登录的状态。如果登录就显示用户的一点信息,如果没有登录就显示登录和注册。
这样的需要很容易实现,我们可以在application的layout中添加对应的输出信息,以便在每个页面都可以看到同样的登录信息。如下:
<div id="user_nav"> <% if user_signed_in? %> Signed in as <%= current_user.email %>. Not you? <%= link_to "Sign out", destroy_user_session_path %> <% else %> <%= link_to "Sign up", new_user_registration_path %> or <%= link_to "Sign in", new_user_session_path %> <% end %> </div>
简单解释一下,这段显示登录信息的代码。这段代码主要是通过devise提供的方法实现,其中,判断是否登录是通过 user_signed_in? 如果登录了,就通过current_user来显示当前用户的email,而退出的路径是devise通过 destroy_user_session标识到/users/sign_out。同样,如果没有登录的话,可以通过 new_user_registration_path 和 new_user_session_path 分别表示注册和登录的路径。那么,当我们把代码写好,刷新页面就可以看到对应的信息了。
如果我们点击sign out的链接,我们应该看到注册和登录链接。
正如我们上面操作的,通过使用devise,添加很少的代码就可以拥有注册,登录,退出的功能。当然,devise还有更多的相关功能也相当容易上手使用。比如,重新设置密码的功能模块,也是在User的model里加上confirmable就可以拥有对应的功能。
最后,可能我们会想到一个问题。因为,所有的登录,权限相关的界面也都是devise生成的,那么,如果,我们希望页面风格和我们自己的网站的风格一致,怎么办?实际上,devise也考虑到了这一点,提供了很容易的定制devise的途径,我们将在下一篇中介绍。
发表评论
-
Destroying a Postgres DB on Heroku
2013-04-24 10:58 937heroku pg:reset DATABASE -
VIM ctags setup ack
2012-04-17 22:13 3259reference ctags --extra=+f --e ... -
alias_method_chain方法在3.1以后的替代使用方式
2012-02-04 02:14 3296alias_method_chain() 是rails里的一个 ... -
一些快速解决的问题
2012-01-19 12:35 1473问题如下: 引用Could not open library ... -
API service 安全问题
2011-12-04 08:47 1386这是一个长期关注的课题 rest api Service的 ... -
Module方法调用好不好
2011-11-20 01:58 1350以前说,用module给class加singleton方法,和 ... -
一个ajax和rails交互的例子
2011-11-19 01:53 1909首先,这里用了一个,query信息解析的包,如下 https: ... -
Rails 返回hash给javascript
2011-11-19 01:43 2278这是一个特别的,不太正统的需求, 因为,大部分时候,ajax的 ... -
关于Rubymine
2011-11-18 23:21 2269开个帖子收集有关使用上的问题 前一段时间,看到半价就买了。想 ... -
ruby中和javascript中,动态方法的创建
2011-11-18 21:01 1241class Klass def hello(*args) ... -
textmate快捷键 汇总
2011-11-16 07:20 8148TextMate 列编辑模式 按住 Alt 键,用鼠标选择要 ... -
Ruby面试系列六,面试继续面试
2011-11-15 05:55 2027刚才受到打击了,充分报漏了自己基础不扎实,不肯向虎炮等兄弟学习 ... -
说说sharding
2011-11-13 00:53 1496这个东西一面试就有人 ... -
rails面试碎碎念
2011-11-12 23:51 1949面试继续面试 又有问ru ... -
最通常的git push reject 和non-fast forward是因为
2011-11-12 23:29 17220git push To git@github.com:use ... -
Rails 自身的many to many关系 self has_many
2011-11-12 01:43 2739简单点的 #注意外键在person上people: id ... -
Rails 3下的 in place editor edit in place
2011-11-12 01:20 948第一个版本 http://code.google.com/p ... -
Heroku 的诡异问题集合
2011-11-11 07:22 1698开个Post记录,在用heroku过程中的一些诡异问题和要注意 ... -
SCSS 和 SASS 和 HAML 和CoffeeScript
2011-11-07 07:52 12962Asset Pipeline 提供了内建 ... -
Invalid gemspec because of the date format in specification
2011-11-07 02:14 2124又是这个date format的错误。 上次出错忘了,记录下 ...
相关推荐
Devise不直接处理角色和权限,但可以通过添加如cancancan或pundit这样的授权库来实现。这些库允许你定义用户的角色并控制他们能访问哪些资源。 9. **定制行为** 如果需要扩展Devise的功能,可以重写或添加控制器...
2. **CanCanCan**:用于授权管理,允许开发者定义用户能做什么,不能做什么,使得权限控制更加简洁。 3. **ActiveAdmin**:一个用于构建后台管理界面的工具,提供丰富的界面元素和CRUD操作。 4. **Paperclip** 和 ...
CanCanCan 是一个针对Ruby on Rails的授权Gem,它允许开发者通过定义能力(Abilities)来控制用户可以做什么,而不是在控制器或视图中进行硬编码。 CanCanCan 的主要优点在于它的灵活性和清晰的结构。它将授权逻辑...
Devise是一个强大的、易于定制的Rails gem,用于处理用户认证。它包含了常见的认证功能,如密码重置、确认电子邮件、记住我等。Devise通过模型、控制器、视图以及会话来管理用户的登录、注册和注销过程。它使用...
标题中的“具有Devise身份验证的模板RailsAngular应用程序”指的是一个使用Ruby on Rails框架和AngularJS前端库构建的Web应用程序,其中集成了Devise gem进行用户身份验证。这个项目可能是为了展示如何在Rails后端与...
1. **安装和配置Rails**:首先,创建一个新的Rails项目,然后添加`devise`和`devise_token_auth` gem到Gemfile并运行`bundle install`。 2. **设置Devise**:运行`rails generate devise:install`和`rails generate...
安装该gem需要在Gemfile中添加`gem 'devise_token_auth'`,然后执行`bundle install`。之后,运行`rails generate devise_token_auth:install User`生成必要的迁移文件和初始化配置。配置包括设置路由、数据库迁移...
安装Devise非常简单,只需在Gemfile中添加gem 'devise',然后运行bundle install即可。 接下来,我们需要集成OmniAuth,这是一个允许Rails应用与各种身份提供者(如谷歌)进行交互的库。OmniAuth的核心在于其配置和...
在Gemfile中添加`gem 'devise'`,然后运行`bundle install`来安装。接着,通过运行`rails generate devise:install`命令初始化Devise,这会创建必要的配置文件并设置默认的路由。 在实现多账户登录时,我们需要创建...
Devise是一个流行的Ruby on Rails的认证解决方案,它提供了一套完整的工具来处理用户认证,如用户注册、登录、会话管理等。而Cancan则是一个用于授权的gem,用于控制用户对不同资源的访问权限。 从给定的文件内容中...
这个框架的核心是 "Devise",这是一个流行的Ruby on Rails gem,用于处理复杂的用户认证问题。通过集成Devise,该引擎能确保用户的安全登录和会话管理。 "内置额外的用户信息" 暗示了该引擎不仅仅提供了基本的身份...
通过使用Devise处理所有身份验证和权限的Pundit,此Rails引擎将admins用户添加到NoCms Admin。 该gem称为nocms-admin-users,因为可以使用其他替代方法(例如cancancan),我们宁可不要使用通用名称。
描述中的“设计扩展来处理oauth2(facebook图)_Ruby_下载”进一步确认了这是关于下载和使用特定的Ruby库或gem,可能是`devise_oauth2_authenticatable`,这个库是Devise的一个扩展,Devise是一个灵活的身份验证解决...
将gem添加到您的Gemfile中(也不要忘记设计): 宝石``设计'' 宝石'devise_google_authenticator','0.3.16' 别忘了“捆绑安装” 设计安装(如果您尚未完成的话) 在设置Devise Google Authenticator之前,您...
在这个简单的分步演示中,我们将深入探讨Rails的安装、基本结构以及如何使用devise和cancan这两个流行的功能性gem。 1. **安装Rails** 在开始之前,确保已经安装了Ruby和RubyGems。然后,通过运行`gem install ...
Nukethecuke Devise权威该应用程序是由提供的 gem生成的。诊断程序此应用程序是用未知的配方共同构建的。 该应用程序是使用未知的首选项构建的,这些首选项无法协同工作。 如果应用程序无法按预期运行,请并包括以下...
有限制的 使用管理Ruby on Rails的授权限制。 控制2或3种类型用户的动作的理想选择。 使用两个简单的控制器助手来限制用户角色对控制器执行特定操作: only_allow :cutom_user_role , to : :some_action_in_the_...
首先,Devise是一个灵活的身份认证解决方案,它提供了许多常见的功能,如密码加密、邮箱验证、会话管理等。安装Devise非常简单,只需要在Gemfile中添加`gem 'devise'`,然后运行`bundle install`和`rails generate ...
这是一个项目管理应用程序,具有流行应用程序Basecamp的许多功能。我与Qwasar硅谷的其他两个人共同开发了这个应用程序。 功能包括: 用户认证的帐户和安全登录 用户创建或参与多个项目的能力 项目中每个用户查看/...
标题中的"authentication_and_devise_546_test"暗示了这是一个关于身份验证和Devise gem在Rails应用中的测试项目。Devise是一个灵活的身份认证解决方案,适用于Ruby on Rails框架,它处理用户注册、登录、密码重置等...