Authlogic和单一访问令牌

Dan*_*nny 8 ruby ruby-on-rails authlogic ruby-on-rails-3

我很难找到一个关于如何使用authlogic启用单一访问令牌身份验证的简单教程.有一些文档,但它不是很有帮助.

我将single_access_token添加到我的数据库中,我添加了这个:

  single_access_allowed_request_types :any
Run Code Online (Sandbox Code Playgroud)

到我的Session类.但我仍然不明白如何使用每次调用传递的凭据参数对用户进行身份验证.我在过滤器之前的require_authentication对current_user执行标准检查,如下所示:

 def current_session
    return @current_session if @current_session
    @current_session = Session.find
  end

  def current_user
    @current_user = current_session && current_session.record
  end
Run Code Online (Sandbox Code Playgroud)

但这足以奏效吗?Session.find方法是否可以根据我的参数来记录用户,或者我是否必须创建单独的方法来实际检查user_credentials参数是否存在然后根据它找到用户然后将该用户记录下来.如果我每次使用SAT时都"创建"一个新会话,或者每次进行API调用时我只是在一个before过滤器中设置当前用户,我感到很困惑.

任何帮助都会很棒!谢谢!

Tim*_*ele 3

我使用 authlogic 实现了 single_access_token 解决方案,我要做的就是添加single_access_allowed_request_types :all到 UserSession 模型中。

然后我将以下内容添加到我想要允许 single_access_token 身份验证的控制器中。

  def single_access_allowed?
      ["some_action_1","some_action_2","some_action_3"].include?(action_name)
  end
Run Code Online (Sandbox Code Playgroud)

您似乎缺少控制器代码。因此,如果您有两个操作“get_user_info”和“update_user_info”,则需要添加。

  def single_access_allowed?
      ["get_user_info","update_user_info"].include?(action_name)
  end
Run Code Online (Sandbox Code Playgroud)