Ruby on rails authlogic UserSession.create(@user)提供未经授权的\u记录
我正试图创建一个明确的会话,如下所示Ruby on rails authlogic UserSession.create(@user)提供未经授权的\u记录,ruby-on-rails,authlogic,omniauth,Ruby On Rails,Authlogic,Omniauth,我正试图创建一个明确的会话,如下所示UserSession.create(@user,true),但是没有创建会话,current\u user是nil 但是当我这样做的时候,我得到了“}> 我看了这里,上面写着 注意这一点,因为Authlogic假定您已经确认用户就是他所说的那个人。例如,这是用于在内部持久化会话的方法。Authlogic查找具有持久性令牌的用户。此时,我们知道用户就是他所说的那个人,所以Authlogic只是用记录创建了一个会话。这对于第三方身份验证方法(如OpenID)特别
UserSession.create(@user,true)
,但是没有创建会话,current\u user
是nil
但是当我这样做的时候,我得到了如何修复此问题,以便在
当前用户中获得有效会话?我不确定.create(object,bool)方法签名,但以下使用authlogic工作
class Api::ApiBaseController < ApplicationController
protected
def verify_token
return false if params[:token].blank?
@session = UserSession.new(User.find_by_single_access_token(params[:token]))
@session.save
end
end
class Api::ApiBaseController
如果这对您不起作用--我认为@user设置不正确。我不确定.create(object,bool)方法签名是否正确,但下面使用authlogic可以工作
class Api::ApiBaseController < ApplicationController
protected
def verify_token
return false if params[:token].blank?
@session = UserSession.new(User.find_by_single_access_token(params[:token]))
@session.save
end
end
class Api::ApiBaseController
如果这对您不起作用--我认为@user设置不正确。现在您可以替换它
UserSession.create @user
到
没什么大不了的
但这让我有了另一种感觉。我忘了我的用户已激活创建时为false
。我已将其设置为true
并创建了会话。现在您可以替换
UserSession.create @user
到
没什么大不了的
但这让我有了另一种感觉。我忘了我的用户已激活创建时为false。我已将其设置为
true
并创建了会话。我遇到了一个类似的问题,原因是用户的持久性令牌为零。在创建UserSession之前重置它。所以
@user.reset_persistence_token!
UserSession.create(@user, true)
我遇到了一个类似的问题,原因是用户的持久性标记为nil。在创建UserSession之前重置它。所以
@user.reset_persistence_token!
UserSession.create(@user, true)
如果将
活动记录\u存储
映射到authlogic user\u sessions
表,您的会话信息将存储在数据库中,并且您将能够存储更大的数据集
在配置文件夹中:
config/initializers/session\u store.rb
- 注释掉App::Application.config.session\u store:cookie\u store,:key=>“\u App\u session”
- 添加或取消注释
App::Application.config.session\u存储:活动\u记录\u存储
config/application.rb的内部
- 在应用程序类的末尾添加:
ActiveRecord::SessionStore::Session.table\u name='user\u sessions'
重新启动应用程序,用户会话中存储的任何信息都将保存在authlogic user_sessions表中
后藤:
有关详细信息如果将活动记录存储
映射到authlogic用户会话
表,则会话信息将存储在数据库中,并且您将能够存储更大的数据集
在配置文件夹中:
config/initializers/session\u store.rb
- 注释掉App::Application.config.session\u store:cookie\u store,:key=>“\u App\u session”
App::Application.config.session\u存储:活动\u记录\u存储
config/application.rb的内部
- 在应用程序类的末尾添加:
ActiveRecord::SessionStore::Session.table\u name='user\u sessions'
重新启动应用程序,用户会话中存储的任何信息都将保存在authlogic user_sessions表中
后藤:
想了解更多信息,我今天遇到了这个问题。在我的例子中,它最终与CSRF令牌相关
我们正在应用程序中创建一个用户和会话,以响应OAuth回调。如果CSRF令牌无效(来自第三方时会出现这种情况),authlogic将不会创建用户会话
无法验证CSRF令牌的真实性
解决方法很简单:
class Oauth::UserSessionsController < ApplicationController
skip_before_action :verify_authenticity_token, only: :callback
def new
# code removed...
end
def callback
# code removed...
UserSession.create(@user)
redirect_to root_path
end
end
class Oauth::UserSessionController
我今天遇到了这个问题。在我的例子中,它最终与CSRF令牌相关
我们正在应用程序中创建一个用户和会话,以响应OAuth回调。如果CSRF令牌无效(来自第三方时会出现这种情况),authlogic将不会创建用户会话
无法验证CSRF令牌的真实性
解决方法很简单:
class Oauth::UserSessionsController < ApplicationController
skip_before_action :verify_authenticity_token, only: :callback
def new
# code removed...
end
def callback
# code removed...
UserSession.create(@user)
redirect_to root_path
end
end
class Oauth::UserSessionController
不!仍然是相同的结果“}>我实际上保存了用户对象,而没有经过authlogic验证,比如@user.save(false)obv