我正在尝试创建一个像这个UserSession.create(@user, true)一样显式的会话,但是会话没有被创建,current_user是nil。
但是当我这样做时,我得到了< #UserSession:{:unauthorized_record=>“}>
us = UserSession.create(@user, true)
RAILS_DEFAULT_LOGGER.info(us.inspect) #=> UserSession: {:unauthorized_record=>""}
我看了一下授权::会话::未经授权的记录d上面写着
注意这一点,因为Authlogic假设您已经确认了用户是他说的那个人。例如,这是用于在内部持久化会话的方法。Authlogic使用持久化令牌查找用户。此时,我们知道用户是他说的那个人,所以Authlogic只是用记录创建了一个会话。这对于第三方身份验证方法尤其有用,比如OpenID。让该方法验证标识,一旦验证,传递对象并创建会话。
这正是我所要做的(我正在使用全方位验证和使用authlogic创建会话)。
如何解决这个问题,以便在current_user中获得一个有效的会话?
发布于 2010-11-15 00:04:31
对于.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如果这不适用于您--我认为@user的设置不正确。
发布于 2012-06-05 18:37:36
我也有一个类似的问题,这是因为persistence_token对用户来说是零的。在创建UserSession之前重置它。所以..。
@user.reset_persistence_token!
UserSession.create(@user, true)发布于 2013-10-23 17:14:07
如果将active_record_store映射到authlogic user_sessions表,则会话信息将存储在数据库中,并且能够存储更大的数据集。
在您的配置文件夹:config/initializers/session_store.rb
App::Application.config.session_store :cookie_store, :key => '_App_session'App::Application.config.session_store :active_record_storeconfig/application.rb内部
ActiveRecord::SessionStore::Session.table_name = 'user_sessions'重新启动应用程序,存储在用户会话中的任何信息都将保存在authlogic user_sessions表中。
Goto:http://apidock.com/rails/ActiveRecord/SessionStore获取更多信息
https://stackoverflow.com/questions/4180453
复制相似问题