【问题标题】:laravel : Return null token But used has addedlaravel : 返回空令牌但使用已添加
【发布时间】:2019-07-02 19:46:42
【问题描述】:

我使用邮递员在我的 laravel 项目中添加用户我得到空令牌但用户已添加 为什么?

{ “令牌”:空}

我该如何解决这个错误? 我使用 laravel 5.6 和 这是我的用户模型:

    <?php

    namespace App;


    use Tymon\JWTAuth\Contracts\JWTSubject;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    class User extends Authenticatable
    {
        use Notifiable;

        /**
         * The attributes that are mass assignable.
         *
         * @var array
         */
        protected $fillable = [
            'name', 'email', 'password','username','lastname','tel','tel',
        ];

        /**
         * The attributes that should be hidden for arrays.
         *
         * @var array
         */
        protected $hidden = [
            'password', 'remember_token',
        ];
        public function getJWTIdentifier()
        {
            return $this->getKey();
        }

        /**
         * Return a key value array, containing any custom claims to be added to the JWT.
         *
  * @return array
         */
        public function getJWTCustomClaims()
        {
            return [];
        }
    }

这是我的注册控制器

    <?php

    namespace App\Http\Controllers;
    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    use App\User;
    use JWTFactory;
    use JWTAuth;
    use Validator;
    use Response;

    class APIRegisterController extends Controller
    {
        //
        public function register( Request $request){
            $validator = Validator::make($request -> all(),[
             'email' => 'required|string|email|max:255|unique:users',
             'username' =>'required',
             'tel' => 'required',
             'name' => 'required',
             'lastname' => 'required',
             'adress' => 'required',
             'password'=> 'required'
            ]);

            if ($validator -> fails()) {
                # code...
                return response()->json($validator->errors());

            }

            User::create([
                'name' => $request->get('name'),
                'email' => $request->get('email'),
                'tel' => $request->get('tel'),
                'username' => $request->get('username'),
                'lastname' => $request->get('lastname'),
                'adress' => $request->get('adress'),
                'password'=> bcrypt($request->get('password'))
            ]);
            $user = User::first();
            $token = JWTAuth::fromUser($user);

            return Response::json( compact('token'));


        }
    }

and this is my controller 
<?php

namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\User;
use Illuminate\Support\Facades\Response;
use Tymon\JWTAuth\Facades\JWTAuth;
use Tymon\JWTAuth\Facades\JWTFactory;
use Validator;


class APIRegisterController extends Controller

{
    //
    public function register( Request $request){
        $validator = Validator::make($request -> all(),[
         'email' => 'required|string|email|max:255|unique:users',
         'username' =>'required',
         'tel' => 'required',
         'name' => 'required',
         'lastname' => 'required',
         'adress' => 'required',
         'password'=> 'required'
        ]);

        if ($validator -> fails()) {
            # code...
            return response()->json($validator->errors());

        }

        User::create([
            'name' => $request->get('name'),
            'email' => $request->get('email'),
            'tel' => $request->get('tel'),
            'username' => $request->get('username'),
            'lastname' => $request->get('lastname'),
            'adress' => $request->get('adress'),
            'password'=> bcrypt($request->get('password'))
        ]);
        $user = User::first();
        $token = JWTAuth::fromUser($user);

        return Response::json( compact('token'));


    }
}

我已经收到一个错误,这是我的问题question,我解决了它

我该如何解决这个错误? 我使用 laravel 5.6

【问题讨论】:

  • 你的 $fillable 数组中有两次 'tel' 受保护 $fillable = [ 'name', 'email', 'password','username','lastname','tel','tel ', ];
  • 您要获取哪个令牌? “_token”还是“remember_token”? 'remember_token' 仅在用户登录然后第一次注销时生成
  • Token ,当我添加用户时
  • CSRF 令牌还是“remember_token”? - 如前所述,“remember_token”在用户第一次注销之前将为空,然后生成
  • 你的数据库在说什么?

标签: php laravel jwt laravel-5.6


【解决方案1】:

我解决了创建用户后在注册功能上添加 if 条件的问题

if ($this->loginAfterSignUp) {
    $token = $this->login($request);
}
return $this->respondWithToken($token);

【讨论】:

    【解决方案2】:

    我之前已经遇到过类似的问题,但我意识到 my$user-&gt;password 拥有加密密码,而不是 login() 所需的痛苦文本。更改您的代码以调用

    $token = JWTAuth::fromUser($user);
    

    $user 持有来自$request 的纯文本密码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 2018-09-03
      • 2019-12-01
      • 2019-05-03
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      相关资源
      最近更新 更多