JWT auth laravel上的invalid_credentials [英] invalid_credentials on JWT auth laravel

查看:118
本文介绍了JWT auth laravel上的invalid_credentials的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将laravel的jwt-auth用于auth API并编写以下代码.

I'm using jwt-auth for auth API with laravel and write following code.

我的注册API运行良好,错误,我的登录API返回invalid_credentials错误. 为什么?

My register API working good bug my login API return invalid_credentials error. why?

laravel版本:5.4

laravel version: 5.4

public function login(Request $request) {

    $credentials = $request->only('username', 'password');

    try {
        $token = JWTAuth::attempt($credentials);
        if (!$token) {
            return response()->json(['error' => 'invalid_credentials'], 401);
        }
    } catch (JWTException $e) {
        return response()->json(['error' => 'could_not_create_token'], 400);
    }

    return response()->json(compact('token'), 200);
}

public function register(Request $request) {

    $credentials = $request->only('email', 'username', 'password', 'name');

    $validator = Validator::make($credentials, [
        'name' => 'required|max:80',
        'username' => 'required|max:80|unique:users',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6',
    ]);

    if ($validator->fails()) {
        $errors = $validator->errors();
        return response()->json(['error' => array(
            'name'     => $errors->first('name'),
            'email'    => $errors->first('email'),
            'username'    => $errors->first('username'),
            'password' => bcrypt('password'),
        )], 400);
    }

    $user = User::create([
        'name'      => $request->name,
        'email'     => $request->email,
        'username'  => $request->username,
        'password'  => $request->password,
    ]);

    $token = JWTAuth::fromUser($user);
    return response()->json(compact('token'));
}

推荐答案

我尝试使用任何解决方案都无法正常工作,然后再次检查我的代码并在我的代码中发现错误.我正在验证中使用bcrypt,而在用户创建时什么也没有.更正了这个问题,它对我有用.

I try any solution and not working and again check my code and find a bug in my code. I'm doing bcrypt in validation and nothing on user create. Corrected this and it working for me.

public function login(Request $request) {

    $credentials = $request->only('username', 'password');

    try {
        $token = JWTAuth::attempt($credentials);
        if (!$token) {
            return response()->json(['error' => 'invalid_credentials'], 401);
        }
    } catch (JWTException $e) {
        return response()->json(['error' => 'could_not_create_token'], 400);
    }

    return response()->json(compact('token'), 200);
}

public function register(Request $request) {

    $credentials = $request->only('email', 'username', 'password', 'name');

    $validator = Validator::make($credentials, [
        'name' => 'required|max:80',
        'username' => 'required|max:80|unique:users',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6',
    ]);

    if ($validator->fails()) {
        $errors = $validator->errors();
        return response()->json(['error' => array(
            'name'     => $errors->first('name'),
            'email'    => $errors->first('email'),
            'username'    => $errors->first('username'),
            'password' => $errors->first('password'),
        )], 400);
    }

    $user = User::create([
        'name'      => $request->name,
        'email'     => $request->email,
        'username'  => $request->username,
        'password'  => bcrypt($request->password),
    ]);

    $token = JWTAuth::fromUser($user);
    return response()->json(compact('token'));
}

这篇关于JWT auth laravel上的invalid_credentials的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆