我正在使用Devise和Omniauth进行Facebook身份验证。在用户使用Devise(常规)或Omniauth(fb)登录后,我试图将用户重定向到上一页。设计:认证用户后重定向到上一页? (request.referer结果循环)
“request.referer”在用户使用我的导航栏上的下拉登录名时起作用,但当用户尝试通过“http:// localhost:3000/users/sign_in”url登录时,“request.referer “让我回到无限循环错误。
这是序列。问题在于(d)。 (a)未登录的用户点击为任务投票。 (b)由于“before_filter:authenticate_user!”,用户被重定向到“users/sign_in”url。在任务控制员。 (c)用户通过输入用户名/密码或点击Facebook图标进行登录。 (d)用户应该被重定向回前一页,使用VoteUp函数完成,但是当我回去刷新页面时,用户登录,所以我知道这只是一个问题路由
MissionsController.rb
class MissionsController < ApplicationController
before_filter :authenticate_user!, :except => [:show, :index]
def vote_for_mission
@mission = Mission.find(params[:id])
if @mission.voted_by?(current_user)
redirect_to request.referer, alert: 'You already voted on this mission.'
else
@mission.increment!(:karma)
@mission.active = true
@mission.real_author.increment!(:userpoints) unless @mission.real_author.blank?
current_user.vote_for(@mission)
redirect_to request.referer, notice: 'Your vote was successfully recorded.'
end
end
ApplicationsController.rb
class ApplicationController < ActionController::Base
protect_from_forgery
def after_sign_in_path_for(resource)
sign_in_url = "http://localhost:3000/users/sign_in" || "http://onvard.com/users/sign_in" ||
"http://www.onvard.com/users/sign_in" #url_for(:action => 'new', :controller => 'sessions', :only_path => false, :protocol => 'http')
if (request.referer == sign_in_url)
env['omniauth.origin'] || request.env['omniauth.origin'] || stored_location_for(resource) || getting_started_path || root_path
else
request.referer
end
end
用户被重定向到 “getting_started_path,” 我为这,所以我知道以前的方案并没有工作。 'else'的情况下,我用jQuery创建的下拉式登录表单将用户重定向到上一页,但是当我尝试将request.referer放入'request.referer == sign_in_url'的情况下,它给了我一个无限循环。
即使用户通过'users/sign_in'网址登录,我将如何将用户重定向到上一页?
对Ruby代码的评论:'sign_in_url =“http:// localhost:3000/users/sign_in”|| “http://onvard.com/users/sign_in”|| “http://www.onvard.com/users/sign_in”#url_for(:action =>'new',:controller =>'sessions',:only_path => false,:protocol =>'http')'will自动与'sign_in_url =“http:// localhost:3000/users/sign_in”'相同。 – 2016-02-25 02:58:10