使用 OAuth 和 OpenID 的 Authlogic - DoubleRenderError
Posted
技术标签:
【中文标题】使用 OAuth 和 OpenID 的 Authlogic - DoubleRenderError【英文标题】:Authlogic with OAuth and OpenID - DoubleRenderError 【发布时间】:2011-05-16 11:17:48 【问题描述】:我的 authlogic 和 openid 工作正常,并且正在尝试集成 oauth 以进行 twitter 身份验证。我不想要注册和登录按钮,所以我遵循了这个例子:Implicit user creation with Authlogic and Authlogic OAuth plugin
我在初始注册和后续登录时收到了 DoubleRenderError,但刷新页面让操作成功完成。
我的 users_controller 创建:
定义创建 @user = User.new(params[:user]) @user.save 做 |结果| # 线 A 如果结果 flash[:notice] = "帐号已注册!" 重定向到 account_url 别的 除非@user.oauth_token.nil? @user = User.find_by_oauth_token(@user.oauth_token) 除非@user.nil? UserSession.create(@user) flash.now[:message] = "欢迎回来!" 重定向到 account_url 别的 redirect_back_or_default root_path 结尾 别的 redirect_back_or_default root_path 结尾 结尾 结尾 结尾我的 user_sessions_controller 创建:
定义创建 @user_session = UserSession.new(params[:user_session]) @user_session.save 做 |结果| 如果结果 flash[:notice] = "登录成功!" redirect_back_or_default account_url 别的 渲染 :action => :new 结尾 结尾 结尾有没有办法解决这个问题?谢谢
【问题讨论】:
【参考方案1】:在多次失败后,以下似乎适用于正常的 authlogic 用户名/密码、使用 Twitter 的 OAuth 以及至少适用于 google 和 yahoo 的 OpenID,这就是我感兴趣的全部
定义创建 @user = User.new(params[:user]) @user.save 做 |结果| # 线 A 如果结果 flash[:notice] = "帐号已注册!" 重定向到 account_url 并返回 别的 如果@user.oauth_token @user = User.find_by_oauth_token(@user.oauth_token) UserSession.create(@user) flash.now[:message] = "欢迎回来!" 重定向到 account_url 并返回 别的 " flash[:notice] = "出了点问题。可能名称或电子邮件已在使用中。" 重定向到 register_path 并返回 结尾 结尾 结尾 结尾此外,在成功和失败重定向/渲染之后,我在用户控制器的更新块中添加了“并返回”
【讨论】:
以上是关于使用 OAuth 和 OpenID 的 Authlogic - DoubleRenderError的主要内容,如果未能解决你的问题,请参考以下文章
OpenId / OAuth 2 流 - 使用 AWS Cognito 的场景