Gemfile为:
gem 'ruby-openid'
gem 'rack-openid'
sessions_controller.rb的代码:
class SessionsController < ApplicationController
def new
flash[:returnurl] = params[:returnurl] if params[:returnurl]
response.headers['WWW-Authenticate'] = Rack::OpenID.build_header( #build身份验证header,跳转到OpenID认证url
:identifier => "https://www.google.com/accounts/o8/id", #这里hard code了Google的OpenID url,测试后会加上别的如新浪围脖/豆瓣等
:required => ["http://axschema.org/contact/email"], #返回OpenID帐号的email
:return_to => sessions_url, #返回为post create action
:method => 'POST')
head 401 #状态码为401
end
def create
if openid = request.env[Rack::OpenID::RESPONSE]
case openid.status
when :success
ax = OpenID::AX::FetchResponse.from_success_response(openid)
identify_url = openid.display_identifier
email = ax.get_single('http://axschema.org/contact/email') # 得到OpenID帐号的email
user = User.where(:email => email).first || User.new
user.email = email
user.identify_url = identify_url
log_in(user)
redirect_to(flash[:returnurl] || root_path)
when :failure
render :action => 'problem'
end
else
redirect_to new_session_path
end
end
end
分享到:
相关推荐
1.加载SNMP 2.建立会话 3.设置传输模式 ...对于他们所标识的意义,读者可以到网上查询一下,提供一个简单的寻找办法,你可以进入google,直接输入 1.3.6.1.2.1.1等点分字符串。 以下我们按步骤给予详细介绍:
1.5.6 使用Google Talk的P2P服务 7 1.5.7 扩展的数据支持和2D/3D图形 7 1.5.8 优化的内存和进程管理 8 1.6 开放手机联盟简介 8 1.7 运行Android的环境 8 1.8 从事Android开发的原因 9 1.8.1 推动Android普及...
1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...
2.3.1 Google账户页面简介25 2.3.2 个人资料设置.25 2.3.3 个人设置27 2.3.4 “我的产品”设置.27 2.4 小结28 第3章 Google网页搜索29 3.1 Google网页搜索设置与简介30 3.1.1 使用偏好设置30 3.1.2 Google网页搜索...
《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言 第一部分 准备篇 第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 ...
1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...
支付与业务完全替代,简单几行代码即可实现支付,简单快速完成支付模块的开发,可轻松嵌入到任何系统里目前仅是一个开发工具包(即SDK),只提供简单的Web实现,建议使用maven或gradle引用本项目即可使用本SDK提供的...
安全框架采用Spring Security 5.0.7,可实现对按钮级别的权限控制,并集成了社交账户登录(QQ和微信)以及手机验证码登录;前端页面使用Bootstrap构建,主题风格为时下Google最新设计语言Material Design,并提供多...
14.4 google suggest功能的相关javascript代码 14.5 小结 第15章 在线文件上传和下载(struts 2.x+fileupload) 15.1 在线文件上传和下载模块原理 15.2 文件上传组件fileupload 15.3 初步使用文件...
程序有英语 汉语 两种语言,根据操作系统环境来选择language. ...在代码实现中还有很多地方需要注意,我也都在代码中做出了注释。可自行查看。 如需交流,可mailto:pencil@yeah.net MSN:pencilsoft@hotmail.com
支付与业务完全剥离,简单几行代码即可实现支付,简单快速完成支付模块的开发,可轻松嵌入到任何系统里 目前仅是一个开发工具包(即SDK),只提供简单Web实现,建议使用maven或gradle引用本项目即可使用本SDK提供的...
支付与业务完全剥离,简单几行代码即可实现支付,简单快速完成支付模块的开发,可轻松嵌入到任何系统里 目前仅是一个开发工具包(即SDK),只提供简单Web实现,建议使用maven或gradle引用本项目即可使用本SDK提供的...
广告调用轻松简单,更完美的支持Google、Baidu、Alimama等广告代码的直接调用。 多种系统模型满足更多站长需要 支持文章、组图、视频、下载等模型,可以用来构建不同类型的站点。 第三方用户整合登录功能 除...
16.3.3 使用Camera实现2D图像的深度效果 16.3.4 探索AnimationListener类 16.3.5 关于变换矩阵的一些说明 16.4 资源 16.5 小结 第17章 地图和基于位置的服务 17.1 地图包 17.1.1 从Google获取...
16.3.3 使用Camera实现2D图像的深度效果 16.3.4 探索AnimationListener类 16.3.5 关于变换矩阵的一些说明 16.4 资源 16.5 小结 第17章 地图和基于位置的服务 17.1 地图包 17.1.1 从Google获取...
Google Doc 的集成,人们可以在其中实时编辑代码并一起评估代码。 前端 项目前端使用 Angular 创建一个单页网页应用。 下面是前端实现的细节。 用户 有两种类型的用户。 一种是需要在 Web 应用程序上注册帐户的主机...
│ 45-实现用户的登录和退出-1.mp4 │ 46-整合google的验证码组件-1.mp4 │ 47-将验证码整合到页面中-1.mp4 │ 48-将验证码地址放入模型数据-1.mp4 │ 49-登录controller中验证验证码-1.mp4 │ 50-密码的加密验证-1....
安全框架采用Spring Security 5.0.7,可实现对按钮级别的权限控制,,并集成了社交账户登录(QQ和微信)以及手机验证码登录;前端页面使用Bootstrap构建,主题样式为时下Google最新设计语言材料设计,并提供多套配色
采用独创的模版自定义技术,全部采用标签和样式来实现,真正实现前台界面DIY设计,而目前市场上的系统只能实现局部结构修改或者必须按照一定的规律来设计,大大局限了设计师的创意; 七、权限管理 1、SEO优化--完善...