0

我正在运行一个 Rails 应用程序,该应用程序允许用户成功通过 LinkedIn 进行身份验证并导入他们的 LinkedIn 个人资料数据。我遇到的(大)问题是,与一个首先登录的用户关联的 cookie 数据即使在他们退出后仍然存在,并且在他们通过 LinkedIn 进行身份验证后被另一个单独的用户提取。第一个用户的数据覆盖了第二个用户的数据……大问题。

非常感谢您的帮助!

这是我的会话控制器:

class SessionsController < ApplicationController

    def new
    end

    def create
        if env['omniauth.auth']
            user = User.from_omniauth(env['omniauth.auth'])
            session[:user_id] = user.id
        redirect_to auth_path
        flash[:success] = 'Signed in with LinkedIn.'
        else
            user = User.find_by_email(params[:session][:email])
            if user && user.authenticate(params[:session][:password])
                sign_in user
                redirect_back_or user
                flash[:success] = 'Signed in the old-fashioned way.'
            else
                flash.now[:error] = 'Invalid email/password combination'
                render 'new'
            end         
        end
    end

    def destroy
        cookies.delete(:remember_token)
        session[:user_id] = nil
        redirect_to root_path
    end
end
4

1 回答 1

0

我遇到了完全相同的问题。在您的omniauth 配置中的某处应该有一个路径配置,用于将用户重定向到的位置。

https://api.linkedin.com/uas/oauth/authenticate之前

之后 - 这为我解决了所有问题,并使控制器操作在执行时始终需要授权,以便同一台计算机上的新用户不会自动使用最后一个用户的 LinkedIn cookie。 https://www.linkedin.com/uas/oauth/authorize

于 2012-10-24T03:03:49.710 回答