首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Authlogic中动态创建UserSession

在Authlogic中动态创建UserSession
EN

Stack Overflow用户
提问于 2010-06-10 04:51:46
回答 1查看 727关注 0票数 1

我们使用authlogic,我们希望创建一个用户帐户,并在用户访问某些页面时动态登录。我们有一个函数,我们作为before_filter在我们想要动态创建用户的操作上运行:

代码语言:javascript
复制
   #
   # Require user account, create an anonymous if no account
   #
   def require_user_or_create_anonymous
        unless current_user
          @user = User.new
          @user.name = 'Anonymous'
          @user.anonymous = 1
          @user.crypted_password = ''
          @user.password_salt = ''
          @user.persistence_token = ''
          @user.email = 'email'
          @user.save false
          @user_session = UserSession.new
        end
  end
  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.record
  end

这将创建用户并让用户登录。然而,我们发现它需要另一个页面加载才能激活。如果在特定操作的before_filter中调用此方法,则current_user方法在该操作中仅返回nil。如果页面随后被重新加载,current_user将正确返回用户对象。

你知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-10 05:00:00

我想通了。我需要用下面的代码更新会话信息:

代码语言:javascript
复制
  @current_user_session = UserSession.find
  @current_user = current_user_session && current_user_session.record

在require_user_or_create_anonymous中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3009850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档