标签: laravel-passport

Laravel 护照授权令牌在生成新令牌时过期

我正在使用 laravel 5.5 和 API 路由的护照身份验证。我正在使用不记名令牌。问题是旧生成的令牌被接受而不是未经身份验证。脚步 :

  • 创建一个不记名令牌。用它。它工作正常。
  • 创建另一个没有注销的令牌,它工作正常。
  • 现在,如果我使用第一个创建的令牌,它也可以正常工作。它不应该工作,但它被接受。

有什么办法可以实现这一目标吗?提前致谢。

api oauth-2.0 laravel laravel-passport

1
推荐指数
1
解决办法
3335
查看次数

Laravel Passport-创建用户时自动创建令牌

我一直在研究使用Passport允许对我的Laravel App进行api访问。我已经使用Laravel文档中的标准教程成功实现了它。

我不想要本教程中描述的oauth管理屏幕,我只想能够使用该应用程序注册用户并让它自动为该用户创建所需的令牌。

这有可能吗,有人能给我一个例子吗?

oauth laravel laravel-passport

1
推荐指数
1
解决办法
5094
查看次数

Laravel API TOKEN 身份验证不起作用

我正在尝试使用api authentication token. 但即使在使用正确的令牌后,它的说法未经授权。

我使用 laravel auth 和 socialite 进行社交认证,所以我的api.php路线是这样的

Route::group(['middleware'=>'auth:api'], function(){
  Route::get('hello','ApiTestControler@index');
});
Run Code Online (Sandbox Code Playgroud)

我试图用这个网址访问这个

http://localhost:8000/api/hello 并在标题中

token: TOKEN HERE 
Content-Type: application/json 
Accept: application/json
Run Code Online (Sandbox Code Playgroud)

我期待它让我登录并显示 ApiTestController index methord

但它抛出一个错误401 unauthorized 我如何解决这个问题并使用 API 令牌获取用户身份验证?

我的控制器

 class ApiTestController extends Controller
{
  public function index(){
    return json_encode ("Welcome REST API");
  }
}
Run Code Online (Sandbox Code Playgroud)

用户迁移表

        $table->increments('id');
        $table->string('name')->unique();
        $table->string('first_name')->nullable();
        $table->string('last_name')->nullable();
        $table->string('email')->unique()->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->boolean('activated')->default(false);
        $table->string('token');
        $table->ipAddress('signup_ip_address')->nullable();
        $table->ipAddress('signup_confirmation_ip_address')->nullable();
        $table->ipAddress('signup_sm_ip_address')->nullable();
        $table->ipAddress('admin_ip_address')->nullable();
        $table->ipAddress('updated_ip_address')->nullable();
        $table->ipAddress('deleted_ip_address')->nullable();
        $table->timestamps();
        $table->softDeletes();
Run Code Online (Sandbox Code Playgroud)

和身份验证配置 config\auth.php

'guards' => [
        'web' => [ …
Run Code Online (Sandbox Code Playgroud)

authentication oauth-2.0 laravel-5 laravel-socialite laravel-passport

1
推荐指数
1
解决办法
9323
查看次数

使用子域时 Laravel 护照 500 内部服务器错误

在我的本地机器和域http://myapp.test上使用 laravel 护照,我没有问题。

当我将代码推送到我的主域https://myapp.com上的服务器时,再次没问题。

但是,在推送到生产中的主域之前,我有一个 sudomain 用于我的实时测试(预生产)。如果我使用https://dev.myapp.com,则会收到 500 内部服务器错误。

知道如何修复它吗?

这是我正在做的狂饮电话:

$http = new GuzzleHttp\Client;

$response = $http->post('https://dev.myapp.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => 'client_id',
        'client_secret' => 'client_secret_key',
        'username' => 'john@example.com',
        'password' => '123456',
        'scope' => '',
    ],
]);

return $response;
Run Code Online (Sandbox Code Playgroud)

如果我将 url 更改为我的本地或生产网站(更改护照密钥并确保存在相同的用户),它可以正常工作。

laravel laravel-passport

1
推荐指数
1
解决办法
3054
查看次数

我如何测试 Laravel 护照 API 端点

所以我想对我的 API 端点进行单元测试。我正在使用 Laravel 5.8 并且使用 Passport 完成 api 身份验证我有以下测试:

public function guest_can_login()
{
    $user = factory(User::class)->create();

    $response = $this->json('POST', 'api/login', [
        'email' => $user->email,
        'password' => 'secret',
    ]);

    $response
        ->assertStatus(200)
        ->assertJson([
            'success' => true,
        ]);
}
Run Code Online (Sandbox Code Playgroud)

当我使用 Postman 执行请求时,它运行良好,对用户进行身份验证并返回一个令牌,但是当我启动测试时它失败了(“预期状态代码 200,但收到 500。”)

所以我在回复中更深入地搜索,我发现了这个:

"message": "未找到个人访问客户端。请创建一个。"

不知道为什么会发生这种情况,如果有人对此有所了解

编辑:固定见下面我的最后一个答案

phpunit laravel laravel-passport

1
推荐指数
1
解决办法
1789
查看次数

Laravel Passport 客户端凭据授予

我使用 Laravel Passport 进行 API 身份验证。我已经设置了密码凭据授予并且它有效。现在我需要一个 Client Credentials Grant 来进行机器对机器的身份验证。
我创建了一个新客户端 php artisan passport:client --client。我试图用这个身体(失眠)向 /oauth/token 发出请求:

{
    "client_id":3,
    "secret":"wJWuVVydkHIQQ6gC7xvd0eEKytIFAD3pa149e6TR",
    "grant_type":"client_credentials"
}
Run Code Online (Sandbox Code Playgroud)

这是我从 Passport 得到的回应:

{
  "error": "invalid_client",
  "error_description": "Client authentication failed",
  "message": "Client authentication failed"
}
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么它是无效客户端?
这是我客户端的 oauth_clients 表中的条目,导出为 json:

{
    "id":"3",
    "user_id":null,
    "name":"ClientCredentials Grant Client",
    "secret":"wJWuVVydkHIQQ6gC7xvd0eEKytIFAD3pa149e6TR",
    "redirect":"",
    "personal_access_client":"0",
    "password_client":"0",
    "revoked":"0",
    "created_at":"2019-04-30 17:06:17",
    "updated_at":"2019-04-30 17:06:17"
}
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 laravel laravel-5 laravel-passport laravel-5.8

1
推荐指数
1
解决办法
7114
查看次数

Laravel 6:调用未定义的方法 App\\User::createToken()

我正在尝试通过以下方式生成令牌以对我的控制器中的用户进行身份验证:

namespace App\Http\Controllers\API;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;

use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use App\Models\User;

class AuthController extends Controller
{
    public function login()
    {
        if (Auth::attempt(['email' => request('email'), 'password' => request('password')])) {
            $user = Auth::user();


            $success['token'] = $user->createToken('myApp')->accessToken;
            dd($success['token']);

        }
    }
Run Code Online (Sandbox Code Playgroud)

目前,我只是想打印出令牌。这是我的用户模型:

<?php

namespace App\Models;

use Illuminate\Notifications\Notifiable;
//use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Hash;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    const USER_FIRST_NAME_FIELD        = "first_name";
    const USER_LAST_NAME_FIELD         = "last_name";
    const USER_PREFERRED_NAME_FIELD    = "preferred_name";
    const USER_EMAIL_FIELD             = "email";
    const …
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-passport laravel-authentication

1
推荐指数
1
解决办法
2万
查看次数

Passport 和 Auth::logout() 产生意外错误

我使用Laravel 6.7 和 Passport来使用我自己的 API。当我尝试使用 注销用户时Auth::logout(),出现以下错误:

Illuminate\Auth\RequestGuard::logout 不存在。

我不明白为什么我会有这样的行为。我没有使用任何定制的守卫。根据 Passport 设置,我的Auth.php如下:

<?php

return [
    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],
    ],
Run Code Online (Sandbox Code Playgroud)

这是我的 AuthenticationController.php 注销代码所在的位置:

/**
     * --------------------------------------------------
     * Removes the identity of a users login session.
     * --------------------------------------------------
     * @param Request $request
     * @return MessageResource
     * -------------------------------------------------- …
Run Code Online (Sandbox Code Playgroud)

laravel-passport laravel-6.2

1
推荐指数
1
解决办法
989
查看次数

Laravel 护照无法安装

我正在使用 laravel 7.x 版本。我想安装 Laravel 护照。但是当我输入composer require laravel/passport时出现错误。* 使用版本 ^8.1 for laravel/framework ./composer.json 已更新 使用包信息加载 composer 存储库 更新依赖项(包括 require-dev) 您的需求无法解析为一组可安装的包。

问题 1 - 结论:不要安装 laravel/framework v8.1.0 - laravel/ui v2.4.0 需要照明/支持 ^7.0 -> 满足 laravel/framework[v7.28.1],illumination/support[7.x-dev , v7.0.0, v7.0.1, v7.0.2, v7.0.3, v7.0.4, v7.0.5, v7.0.6, v7.0.7, v7.0.8, v7.1.0, v7.1.1, v7.1.2, v7 .1.3、v7.10.0、v7.10.1、v7.10.2、v7.10.3、v7.11.0、v7.12.0、v7.13.0、v7.14.0、v7.14.1、v7.15.0、v7.16.0、v7.16.16 , v7.17.0, v7.17.1, v7.17.2, v7.18.0, v7.19.0, v7.19.1, v7.2.0, v7.2.1, v7.2.2, v7.20.0, v7.21.0, v7.22.0, v7 .22.1、v7.22.2、v7.22.3、v7.22.4、v7.23.0、v7.23.1、v7.23.2、v7.24.0、v7.25.0、v7.26.0、v7.26.1、v7.27.0、v7.27.0.07 , v7.28.1, v7.3.0, v7.4.0, v7.5.0, v7.5.1, v7.5.2, v7.6.0, v7.6.1, v7.6.2, v7.7.0, v7.7.1, v7.8.0, v7 …

laravel laravel-5 laravel-passport

1
推荐指数
1
解决办法
5691
查看次数

Laravel 护照 7.5.1 - 复制声明

我们有一个与 laravel/passport 相关的新错误:7.5.1。今天,这个图书馆已经像上周一样工作了。但这停止通过邮递员显示此消息:

不推荐将声明复制为标头,并将从 v4.0 中删除。如果您需要复制标题,请手动设置标题。

有人知道这个问题吗?

我们不知道如何继续这个......

我们正在使用 Laravel 5.7(我们知道......)

php laravel laravel-passport laravel-5.7

1
推荐指数
2
解决办法
5949
查看次数