首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >寄存器上的Laravel Passport invalid_credentials

寄存器上的Laravel Passport invalid_credentials
EN

Stack Overflow用户
提问于 2018-12-01 23:24:06
回答 1查看 1.9K关注 0票数 1

我的护照出了点问题。我收到了以下消息:

代码语言:javascript
复制
"error": "invalid_credentials",
"message": "The user credentials were incorrect."

当我尝试注册或登录时。然而,用户仍然存储在数据库中。下面是我的代码: AuthServiceProvider:

代码语言:javascript
复制
<?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));
    }
}

RegisterController:

代码语言:javascript
复制
<?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);

    }
}

LoginController:

代码语言:javascript
复制
<?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":“用户凭证不正确”。登录的情况也是如此。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-06 04:54:50

我终于找到了。

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

它只需要更改代码:

代码语言:javascript
复制
$user = User::create([
            'name' => request('name'),
            'email' => request('email'),
            'password' => bcrypt('password')
            /*'admin' => isset(request('admin'))*/
        ]);

在RegisterController的函数寄存器(请求$request)中执行以下操作:

代码语言:javascript
复制
$user = User::create([
            'name' => request('name'),
            'email' => request('email'),
            'password' => Hash::make(request('password'))
            /*'admin' => isset(request('admin'))*/
        ]);

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53572239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档