OpenId Authentication For Rails3
1. Add Gem
GemFile
gem 'ruby-openid'
gem 'rack-openid', '>=0.2.1', :require => 'rack/openid'
2. install open_id_authentication as a plugin
cd vendor/plugins
git clone git://github.com/rails/open_id_authentication.git
3. Modify vendor/plugins/open_id_authentication/init.rb
remove code
if Rails.version < '3'
config.gem 'rack-openid', :lib => 'rack/openid', :version => '>=0.2.1'
end
Because your rails is 3.0.0.
4. Add OpenId Authentication
SessionController
def create
logout_keeping_session!
if using_open_id?
open_id_authentication
else
user = User.authenticate(params[:login], params[:password])
.....
end
def open_id_authentication(identity_url = nil)
# Pass optional :required and :optional keys to specify what sreg fields you want.
# Be sure to yield registration, a third argument in the #authenticate_with_open_id block.
authenticate_with_open_id(identity_url,
:required => [ :nickname, :email ],
:optional => :fullname) do |result, identifier, registration|
case result.status
when :missing
note_failed_signin "Sorry, the OpenID server couldn't be found"
when :invalid
note_failed_signin "Sorry, but this does not appear to be a valid OpenID"
when :canceled
note_failed_signin "OpenID verification was canceled"
when :failed
note_failed_signin "Sorry, the OpenID verification failed"
when :successful
if @current_user = User.where("open_id LIKE ?", "%#{identifier}%").first
self.current_user = @current_user
flash[:notice] = "Logged in successfully"
else
note_failed_signin "Sorry, no user by that identity URL exists"
end
end
redirect_back_or_default('/')
end
def note_failed_signin(msg = nil)
flash[:error] = msg || "Couldn't log you in as '#{params[:login]}'"
logger.warn(msg || "Failed login for '#{params[:login]}' from #{request.remote_ip} at #{Time.now.utc}")
end
Page: create.rhtml.erb
<%= form_tag session_path do -%>
<fieldset>
<legend>Log In</legend>
<dl>
<dt><%= label_tag 'login' %></dt>
<dd><%= text_field_tag 'login', @login %></dd>
</dl>
<dl>
<dt><%= label_tag 'password' %> </dt>
<dd><%= password_field_tag 'password', nil %></dd>
</dl>
<!-- Uncomment this if you want this functionality-->
<dl>
<dt><%= label_tag 'remember_me', 'Remember me' %></dt>
<dd><%= check_box_tag 'remember_me', '1', @remember_me %></dd>
</dl>
<dl>
Or
</dl>
<dl>
<dt><%= label_tag 'openid_identifier', 'OpenID' %></dt>
<dd><%= text_field_tag 'openid_identifier' %></dd>
</dl>
<dl>
<%= submit_tag 'Log in', :class=>"button" %>
</dl>
<p style="color: red"><%= flash[:error] unless flash[:error].nil? %></p>
</fieldset>
<% end -%>
User model should add a open_id column.
分享到:
相关推荐
OAuth gem for Rails3 是一个针对Ruby on Rails框架的授权库,它实现了OAuth协议,以便于在Rails应用中安全地处理第三方服务的授权流程。OAuth是一个开放标准,允许用户让第三方应用在无需分享用户名和密码的情况下...
Aspnet-OpenId.AspNet.Authentication.zip,旧版asp.net web应用程序的openid connect身份验证openid.aspnet.authentication,asp.net是一个开源的web框架,用于使用.net构建现代web应用和服务。asp.net创建基于html5...
3. **初始化OpenID检查器**:使用JOpenID提供的`ConsumerManager`类来初始化OpenID检查器,它将处理验证过程中的各种交互。 4. **启动验证流程**:当用户输入OpenID标识后,调用检查器的`beginAuthentication()`方法...
微信开发获取openId
3. **身份验证**:用户在 OpenID 提供商处输入自己的凭证进行验证。 4. **响应**:如果身份验证成功,OpenID 提供商会向应用程序发送一个包含身份验证结果的消息。 5. **完成登录**:应用程序根据收到的信息决定是否...
3. **config/routes.rb**: Rails路由配置文件,可能会有针对OpenID认证的路由设置。 4. **app/models/user.rb**: 用户模型文件,`devise`通常会在这里添加一些模块,如`devise :database_authenticatable, :...
3. **示例代码**:可能包含一些示例应用程序或代码片段,演示如何使用openid4java库来实现OpenID的身份验证功能,这对于初学者来说是非常有用的。 4. **教程和指南**:这些教程可能涵盖了从基础概念到高级特性的...
3. **Relying Party (RP)**:依赖方,即使用OpenID进行身份验证的网站或服务。 4. **OpenID Provider (OP)**:开放ID提供者,为用户提供身份验证服务。 5. **OP Endpoint URL**:OP的终结点URL,是OP服务器处理身份...
本代码作用于前后端分离获取微信openId,调用说明:在api中新建一个Default.aspx页面,复制文件中代码到页面中,修改appid,key,webAddr值。部署api;前端跳转url:api地址+“/efault.aspx?reurl="+前端页面地址;如果...
用户只需要注册一个OpenID提供商(通常称为OP),然后可以使用这个提供商的URL作为身份标识,在支持OpenID的网站上进行登录。这样,用户不再需要记住每个网站的用户名和密码,减少了密码管理的复杂性,并降低了因...
3. **微信小程序端** - 在小程序端,当用户授权登录时,调用wx.login()方法获取临时登录凭证(code)。 - 将获取的code通过网络请求发送到PHP后端,这一步通常使用wx.request()方法完成。 - 小程序端也需要配置小...
PHP如何获得Openid,微信公众号通过appid和appsecret获取Openid,该类实现了从微信公众平台获取code、通过code获取openid和access_token、
3. **OpenID是什么** OpenID 是一种标准的开放协议,它允许用户通过自己的URI向网站提供身份验证信息。这个协议定义了用户和依赖方(Relying Party,即使用OpenID的网站)之间的交互流程,使得用户可以在不透露...
3. **获取用户信息**:有了access_token和openid,你可以进一步获取用户的名字和头像。如果你在第一步选择了`snsapi_userinfo`权限,可以直接请求用户信息。否则,只能获取到openid。这里我们假设你有snsapi_...
3. **防止OpenID钓鱼**:教育用户识别假冒的IdP页面,避免泄露个人信息。 四、OpenID的优势与挑战 1. **优势**:OpenID简化了用户的登录过程,减少了密码管理的负担,同时也降低了网站运营者的账户管理成本。 2. ...
3. **标识URL(Identity URL)**:用户在OpenID系统中的唯一标识,可以是任何可解析的URL,如个人博客地址。 JOIDS的主要特点和功能包括: 1. **易用性**:JOIDS提供简单的配置和管理界面,使得部署和管理OpenID...
BuildBot-OpenID BuildBot的OpenID授权/身份验证插件注意:更多文档即将发布。 注意2:此代码适用于BuildBot版本8。如何配置在master.cfg中,将authz_cfg =行替换为类似authz_cfg=openidauthz.OpenIDAuthZ( openid_...
用于OpenID Connect会话管理的Rails引擎 假定使用OmniAuth和omniauth-openid-connect策略。 依存关系 如果不存在,请添加以下gem: gem 'omniauth-openid-connect' , git : '...
3. **获取OpenID**:使用Access Token,调用相应接口,获取到用户的OpenID。OpenID是用户的唯一标识,与微信账号绑定。 在实际开发中,这个工具类可能包含以下几个关键方法: - `getAuthCode(String redirectUri)`...