Authentication: 使用 Devise
devise是一套使用者認證(Authentication)套件,是Rails社群中最廣為使用的一套。
編輯 Gemfile 加上
gem 'devise'
輸入bundle install安裝此套件
輸入rails g devise:install產生devise設定檔
編輯 config/environments/development.rb 和 production.rb 加入寄信時預設的網站網址:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
確認 app/views/layouts/application.html.erb layout 中可以顯示 flash 訊息,例如
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
確認 routes.rb 中有設定網站首頁位置,例如
root :to => "welcome#index"
輸入rails g devise user產生 User model 及 Migration
如果需要E-mail驗證功能,可以編輯app/models/user.rb和migration將confirmable功能打開
輸入rails generate devise:views產生樣板,這會包括有註冊、登入、忘記密碼、Email等等頁面,放在app/views/devise目錄下。
輸入bin/rake db:migrate建立資料表
用法
在需要登入的 controller 加上before_action :authenticate_user!
可以在 Layout 中加上登入登出選單
<% if current_user %>
<%= link_to('登出', destroy_user_session_path, :method => :delete) %> |
<%= link_to('修改密碼', edit_registration_path(:user)) %>
<% else %>
<%= link_to('註冊', new_registration_path(:user)) %> |
<%= link_to('登入', new_session_path(:user)) %>
<% end %>
加上自訂欄位
Devise預設沒有產生出first_name、last_name等等欄位,我們可以加一些欄位到User Model:
rails g migration add_username_to_users,加上
add_column :users, :username, :string
rake db:migrate 新增這個欄位
編輯application_controller.rb補上configure_permitted_parameters方法:
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
# ...
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :username
devise_parameter_sanitizer.for(:account_update) << :username
end
end
編輯views/devise/registrations/edit.html.erb和views/devise/registrations/new.html.erb,加上username欄位
<div><%= f.label :username %><br />
<%= f.text_field :username %></div>
进入项目
1、添加gem
gem 'devise'
2、更新本地gem
bundle install
3、创建页面
rails g controller home index
4、初始化devise
rails g devise:install
会有如下提示:
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 it 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"
3. Ensure you have flash messages in app/views/layouts/application.html.erb.
For example:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
4. If you are deploying Rails 3.1 on Heroku, you may want to set:
config.assets.initialize_on_precompile = false
On config/application.rb forcing your application to not access the DB
or load models when precompiling your assets.
进行相关配置
5、与模型User关联
rails g devise User
这条命令会生成一个user.rb model文件,一个migration文件和一个devise_for的路由
我们可以看到User model和普通的ActiveRecord的区别并不大,主要的差别是调用了devise方法,当然这也是配置的关键。Devise方法有很多的参数用来标识是否使用对应的功能模块
Devise参数?(还不了解)
6.执行迁移任务
rake db:migrate
查看在router.rb文件中的devise_for都产生了什么路由.可以通过rake routes查看
产生了如下路由:登录,登出,重置密码,注册,和修改。如果我们需要,所有这些路由都是可以配置的
7、修改默认访问url
打开routes.rb,加入:root :to => "home#index"
8、修改index.html.erb代码
<% if user_signed_in? -%> <!-- Provided by devise -->
<div style="float:right">
<%= current_user.email %> |
<%= link_to '用户信息', edit_user_registration_path %> |
<%= link_to '退出登录', destroy_user_session_path, :method => :delete %> |
</div>
<% end -%>
<% unless user_signed_in? -%>
<div style="float:right">
<%= link_to '注册', new_user_registration_path %> |
<%= link_to '登录', new_user_session_path %>
</div>
<% end -%>
9、启动服务
rails s
10、测试
localhost:3000/home/index
1.下拉框中存放的是图片的路径,触发下拉框的change事件,得到url,然后显示在页面上。例如:<IMG id="avatarImg"> 然后$("#avatarImg").attr("src",url);
相关推荐
标题《Rails3 device and cancan》与描述《ROR ruby on rails device plugin教程》指出本文是关于如何在Rails 3.2应用程序中整合Devise认证插件和Cancan授权插件的教程。Devise是一个流行的Ruby on Rails的认证解决...
在UE4(Unreal Engine 4)开发过程中,有时候我们需要获取电脑的唯一标识符或硬件信息,例如在实现用户认证、设备绑定等场景时。在UE4 4.25及之后的版本中,蓝图系统不再支持直接获取这些信息,这给开发者带来了一定...
电脑和手机移动端都适用的jQuery拖动滑块图片拼图验证码插件,通过鼠标拖动或触屏滑动填充拼图来进行安全验证,点击刷新可以更换当前待验证的图片。 HTML & css: <!DOCTYPE html> <html lang="zh"> <...
- **Device Management**: 登录管理、许可管理、自动升级等功能。 - **虚墙模式/透明模式**: 在这一模式下,ASDM提供类似的配置选项,但界面和功能可能有所不同,以适应透明模式下的特殊需求。 #### 五、高级配置...
目前,Convoy 支持多种存储驱动,包括本地文件系统、Rados Block Device (RBD)、GlusterFS、NFS、Amazon EBS 和 Google Compute Engine Persistent Disks 等。选择合适的驱动取决于你的具体需求和现有的基础设施。 ...
根据文件内容,此文档描述了一个特定的工业通讯模块FDNL-S0808I-MM,该模块具备8点输入和8点输出功能,适用于DEVICENET现场总线网络。本文将深入解析该模块的特点、应用场景、技术规格等关键知识点。 知识点一:...
在本文中,我们将深入探讨如何在Silicon框架中新建网关工程,并着重关注"Plugin"目录下的`device-table`插件及其相关功能。这个过程主要涉及到C#编程语言,因此对于熟悉C#开发者来说,理解这些概念至关重要。 首先...
2. **设备认证(Device Authentication)**:iap2协议包含一套完整的设备认证流程,确保只有经过苹果认证的CarPlay兼容设备才能与iPhone建立连接。这一机制增强了系统的安全性,防止了恶意软件的侵入。 3. **配件...
然后,需要配置插件连接到Ceph集群,包括设置RBD池名、Ceph集群的认证信息等。一旦配置完成,就可以在创建Docker容器时指定使用这个插件创建Volume,例如: ```bash docker run -v myvol:rbd://pool/myvol --volume...
此外,它可能还包括错误处理、设备认证和授权等安全机制。 ### 5. API接口 作为微服务的一部分,iot_device会提供清晰的API接口,让其他服务或客户端可以与设备交互。这些接口可能包括设备控制命令、数据采集、状态...
文档指明了需要安装配置的软件包括open-iscsi和device-mapper-multipath。 在客户端软件安装说明中,文档强调了确认操作系统版本的重要性,建议通过命令行工具lsb_release -a或在图形用户界面(GUI)中查看General...
3. **制造商安全认证**:Widevine可以与制造商的安全机制紧密集成,这意味着只有通过制造商认证的设备才能正常使用Widevine的功能。许多制造商会在Bootloader等底层添加自己的安全机制,确保只有受信任的软件才能...
这个插件可能是为了将Aperio设备集成到更广泛的访问控制系统中,比如提供安全认证、门禁管理等功能。 从压缩包中的文件名来看,我们可以推断出以下关键知识点: 1. **Audit_trail_2A35_162697_202103301059.txt**...
开发这样一个工具需要深入理解J2ME的MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device Configuration)规范,以适应移动设备的资源限制。此外,为了保证安全性,需要设计健壮的通信协议...
例如,“SELECT * FROM flow_statistics WHERE device_id = 'device1'” 可用于查看指定设备上的所有流表统计信息。 - **控制台使用**:XSQL 查询通常在 OpenDaylight 的命令行界面上执行,用户可以通过命令行工具...
在standalone_demo中,针对这三种密钥长度分别进行了测试,支持ECB(电子密码本)、CBC(密文块链)和GCM(计数器模式加认证码)三种加密模式。测试结果通过串口log进行输出。 2. **双核并发与核心锁**:corelock...
- 安装过程中,如果出现“数字签名”警告,通常应选择继续安装,因为这是驱动程序未获得官方操作系统认证的正常现象。 - 如果安装后相机仍无法正常工作,可以尝试更新或重新安装驱动,或者检查USB线缆和接口是否存在...
在ISAPI的使用过程中,设备作为服务端监听特定端口,而用户程序则作为客户端主动登录设备进行通信。为了实现这一通信过程,设备需拥有固定的IP地址,并确保客户端的请求能顺利到达服务端。由于ISAPI基于HTTP协议,...
在新建的应用中,yiic 自动生成了基本的目录结构和文件,包括首页、联系页和登录页。这些页面展示了应用的基本功能,如用户认证和表单提交。 Yii 应用的目录结构通常如下: - `index.php`:Web 应用的入口脚本。 -...
2. 认证授权流程:根据豆瓣网的API,应用需要经过四个步骤完成认证授权。首先,通过申请的api key和私钥获取未授权的请求令牌。然后,引导用户授权该请求令牌,通常通过浏览器跳转至豆瓣网的授权页面。用户同意授权...