通过http标头传递真实性令牌

时间:2013-06-13 07:27:40

标签: ruby-on-rails ruby-on-rails-3.2 restful-authentication

我有一个使用令牌来验证用户的rails应用程序。目前我将令牌作为params传递。我想改变这个。我相信可以通过html标头传递它。我不明白如何使用authenticate_or_request_with_http_token do |token, options|。 我的rails应用程序实际上是我的iphone客户端的服务器。我不明白的事情是:

  1. 我知道options是nonce但是我的客户端和服务器之间会如何解决?

  2. 如何在我的服务器代码中实际使用它。

  3. 我可以使用authenticate_or_request_with_http_token do |token, options|检查标头中的标记,但是一旦成功创建会话,我该如何将其插入标题。

  4. 这是我的服务器会话控制器:

    def create
    if @user && @user.authenticate(params[:password])
     # @token = @user.auth_token
     @user.auth_token = SecureRandom.hex 
     @user.save
        respond_to do |format|
            format.json {render :json => {:status => "200", :message => "Logged in successfully", :auth_token => @user.auth_token}}
        end
    else
        respond_to do |format|
            format.json {render :json => {:status => "401", :message => "wrong credentials"}}
        end
    end
      end
    
      def destroy
        if(@user)
          @user.auth_token = ""
          @user.save
          respond_to do |format|
             format.json {render :json => {:status => "200", :message => "logged out successfully"}}
          end
        else
          respond_to do |format|
             format.json {render :json => {:status => "401", :message => "No User"}}
          end
       end
      end
    
    def user
      @user = User.find_by_auth_token(params[:auth_token])
    end
    

1 个答案:

答案 0 :(得分:4)

设置您使用的自定义标头response.headers

这样的东西
response.headers["X-AUTH-TOKEN"] = auth_token

应该工作..来阅读你使用的标题

request.headers["X-AUTH-TOKEN"]

命名中的X-是一种很好的做法惯例,所有自定义标头都应该在前面有X-