如何在Rails中正确设置令牌认证?

时间:2017-04-11 06:51:30

标签: ruby-on-rails ruby ruby-on-rails-3 devise http-token-authentication

我正在尝试为项目制作API。我按照此视频中的说明进行操作 - https://www.youtube.com/watch?v=lgdUqtw4weg&t=165s

基本上在视频中,我为用户模型创建了一个标记列。并设置控制器,以便我可以使用post方法。 但是当我运行POST时。 我收到错误说

{"error":"You need to sign in or sign up before continuing."}

我认为Devise正在干扰POST,并且在尝试访问非公共页面时发现用户尚未登录。

如何通过此获取令牌?

这是我的api控制器。

class Api::V1::UserSerializedController < ApplicationController
protect_from_forgery except: :index
respond_to :json


def create 


    user = User.where(email: params[:email]).first

    if user.valid_password?(params[:encrypted_password])
        render json: user.as_json(only: [:email, :authentication_token]),status: :created

    else 
        head(:unauthorized)
    end

end 

def show

end
end

1 个答案:

答案 0 :(得分:0)

您继承authenticate_user!并且我猜测您在行动之前设置了ApiController

您必须将父类更改为Api::V1::UserSerializedController(我更喜欢这个)

OR

跳过 <script> // takes the form field value and returns true on valid number function valid_credit_card(value) { // accept only digits, dashes or spaces if (/[^0-9-\s]+/.test(value)) return false; // The Luhn Algorithm. It's so pretty. var nCheck = 0, nDigit = 0, bEven = false; value = value.replace(/\D/g, ""); for (var n = value.length - 1; n >= 0; n--) { var cDigit = value.charAt(n), nDigit = parseInt(cDigit, 10); if (bEven) { if ((nDigit *= 2) > 9) nDigit -= 9; } nCheck += nDigit; bEven = !bEven; } return (nCheck % 10) == 0; } console.log(valid_credit_card("5610591081018250"),"valid_credit_card Validation"); </script>

的此操作