Laravel 护照 invalid_credentials 已登记

Laravel Passport invalid_credentials on register

我的护照有问题。 我有消息:

"error": "invalid_credentials",
"message": "The user credentials were incorrect."

当我尝试注册或登录时。 然而用户仍然存储在数据库中。 这是我的代码: 授权服务提供商:

<?php

namespace App\Providers;

use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Carbon\Carbon;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        Passport::routes();

        Passport::tokensExpireIn(Carbon::now()->addMinutes(1));

        Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
    }
}
注册控制器:

<?php

namespace App\Http\Controllers\Api\Auth;

use Illuminate\Http\Request;
//use Illuminate\Routing\Route;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Controller;
use App\User;
use Laravel\Passport\Client;

class RegisterController extends Controller
{


 private $client;

     public function __construct(){

      $this->client = Client::find(1);
     }


    public function register(Request $request){


     $this->validate($request, [
      'name' => 'required',
      'email' => 'required|email|unique:users,email',
      'password' => 'required|min:6'
     ]);


     $user = User::create([
      'name' => request('name'),
      'email' => request('email'),
      'password' => bcrypt('password')
      /*'admin' => isset(request('admin'))*/
     ]);


     $params = [
      'grant_type' => 'password',
      'client_id' => $this->client->id,
      'client_secret' => $this->client->secret,
      'username' => request('email'),
      'passord' => request('password'),
      'scope' => '*'
     ];


     $request->request->add($params);

     $proxy = Request::create('oauth/token', 'POST');

     return Route::dispatch($proxy);

    }
}

登录控制器:

<?php

namespace App\Http\Controllers\Api\Auth;

use Illuminate\Http\Request;
//use Illuminate\Routing\Route;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
use Laravel\Passport\Client;

class LoginController extends Controller
{


 //use IssueTokenTrait;


 private $client;

 public function __construct(){

  $this->client = Client::find(1);
  }


  public function test(){

   return 'Tu essaie de te loger !';
  }



    public function login(Request $request){

     $this->validate($request, [
      'username' => 'required',
      'password' => 'required'
     ]);


     $params = [
      'grant_type' => 'password',
      'client_id' => $this->client->id,
      'client_secret' => $this->client->secret,
      'username' => request('username'),
      'passord' => request('password'),
      'scope' => '*'
     ];


     $request->request->add($params);

     $proxy = Request::create('oauth/token', 'POST');

     return Route::dispatch($proxy);


    }



    public function refresh(Request $request){

     $this->validate($request, [
      'refresh_token' => 'required'
     ]);


     $params = [
      'grant_type' => 'refresh_token',
      'client_id' => $this->client->id,
      'client_secret' => $this->client->secret,
      'username' => request('username'),
      'passord' => request('password')
     ];


     $request->request->add($params);

     $proxy = Request::create('oauth/token', 'POST');

     return Route::dispatch($proxy);

    }



    public function logout(Request $request){

     $accessToken = Auth::user()->token();

     DB::table('oauth_refresh_tokens')
     ->where('access_token_id', $accessToken->id)
     ->update(['revoked' => true]);

     $accessToken->revoke();

     return response()->json([], 204);

    }
}

所以在寄存器的情况下,如果数据有误,我会得到正确的消息。 但是当它们好的时候,我会收到这两条消息: "error": "invalid_credentials", "message": "The user credentials were incorrect." 登录时也一样。 有人可以帮助我吗?

终于找到了

我把解决方案放在这里以防有一天有人遇到同样的问题。

只需更改代码即可:

$user = User::create([
            'name' => request('name'),
            'email' => request('email'),
            'password' => bcrypt('password')
            /*'admin' => isset(request('admin'))*/
        ]);

在 RegisterController 的函数 register(Request $request) 中 通过:

$user = User::create([
            'name' => request('name'),
            'email' => request('email'),
            'password' => Hash::make(request('password'))
            /*'admin' => isset(request('admin'))*/
        ]);

其他一切都会正常工作(包括登录 :))。