标签: laravel-passport

Laravel Passport 自定义哈希机制

我目前正在构建一个与更大的应用程序(Zend 1.x)一起工作的应用程序(使用 Laravel)。

我使用 Laravel Passport 进行 API 身份验证。我需要将 Laravel Passport 默认哈希机制更改为 Zend 哈希才能进行身份验证。

有人可以向我指出一个 API 或我需要重写才能运行它的东西吗?我不想编辑核心 Laravel Passport 代码。

我已经看到了创建自定义用户提供程序和修改validateCredentials()方法的建议,但这些都是针对核心 Laravel 的。

我已经在 User 类中使用 findForPassport 方法来覆盖用户名字段。

public function findForPassport($username)
{
    return $this->where('email', $username)->first();
}
Run Code Online (Sandbox Code Playgroud)

php laravel-5 laravel-passport laravel-5.4

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

Laravel Passport 不生成令牌

我使用 Laravel 作为我的 ionic 应用程序的后端,并使用 Laravel Passport 进行身份验证。当我尝试调用createToken()Auth时,Call to undefined method

登录.ts

login(event){
        let dataJSON;
        let formData = new FormData();
        formData.append('email',event.target[0].value)
        formData.append('password',event.target[1].value)
        this.http.post(ENV.BASE_URL+'/auth', formData)
        .subscribe((data) => {
            console.log(data);

            dataJSON = data;
        }, (error) => {
            console.log("Error!", error);
        });
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

用户控制器.php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Carbon\Carbon;
use App\User;

class UserController extends Controller{
    public function auth(Request $request){
        $params = $request->only('email', 'password');
        $username = $params['email'];
        $password = $params['password'];
        if(\Auth::attempt(['email' => $username, …
Run Code Online (Sandbox Code Playgroud)

php oauth-2.0 laravel laravel-5 laravel-passport

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

在多租户(hyn 包)laravel 中通过 API(使用护照)登录

这是错误:

RuntimeException: 未找到个人访问客户端。请创建一个。在第 94 行的文件 /var/www/html/pharmacy/vendor/laravel/passport/src/ClientRepository.php 中

这是我的登录功能:

 public function login(Request $request)
    {
        $request->validate([
            'email' => 'required|string|email',
            'password' => 'required|string',
            'remember_me' => 'boolean'
        ]);
        $credentials = request(['email', 'password']);
        if (!Auth::attempt($credentials))
            return response()->json([
                'message' => 'Unauthorized'
            ], 401);
        $user = $request->user();
        $tokenResult = $user->createToken('Personal Access Token');
        $token = $tokenResult->token;
        if ($request->remember_me)
            $token->expires_at = Carbon::now()->addWeeks(1);
        $token->save();
        return response()->json([
            'access_token' => $tokenResult->accessToken,
            'token_type' => 'Bearer',
            'expires_at' => Carbon::parse(
                $tokenResult->token->expires_at
            )->toDateTimeString(),
            'name' => Auth::user()->name,
            'email' => Auth::user()->email,
        ]);
    }
Run Code Online (Sandbox Code Playgroud)

这是我的路线文件api.php

Route::group([
    'prefix' …
Run Code Online (Sandbox Code Playgroud)

multi-tenant laravel laravel-5 laravel-passport

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

如何在 Laravel/Passport 中重写 `issueToken` 方法

我试图覆盖issueToken位于的方法\Laravel\Passport\Http\Controllers\AccessTokenController而不添加新的路由,即(api/oauth/token)。我已经构建了自己的AccessTokenController方法来执行我想要的功能,但是当我调用时oauth/token,正在执行父方法而不是我的实现..我是否错过了完成覆盖的某些内容?

<?php
   namespace App\Http\Controllers;

   use phpseclib\Crypt\RSA;
   use Illuminate\Database\Eloquent\ModelNotFoundException;
   use League\OAuth2\Server\Exception\OAuthServerException;
   use Psr\Http\Message\ServerRequestInterface;
   use \Laravel\Passport\Http\Controllers\AccessTokenController as ATC;

   class AccessTokenController extends ATC {

     public function issueToken(ServerRequestInterface $request){
       try {
         // Fetching username from request
         $username = $request->getParseBody()['username'];
         // Fetching the User
         $user = User::where('email', '=', $username);
         // Genereting token
         $tokenResponse = parent::issueToken($request);
         //convert response to json string
         $content = $tokenResponse->getBody()->__toString();
         $content['email'] = $user['emial'];
         //convert json to array
         $data = json_decode($content, true);
         return $data;

       } …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-passport

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

如何从 Laravel Passport 中的授权码授予中获取授权码?

我正在尝试使用授权代码授予第三方客户端登录并授予对我的 API 的访问权限。第一步是使用所需的参数在 /oauth/authorize 请求权限。当我这样做时,我收到一条错误响应,显示“Call to a member function getKey() on null”。我注意到即使没有参数我也会遇到同样的错误。

授权码授予权限请求

这是我的 web.php 中处理 /redirect 路由的代码。

Route::get('/redirect', function (Request $request) {
    $request->session()->put('state', $state = Str::random(40));
    $query = http_build_query([
        'client_id' => '6',
        'redirect_uri' =>  'http://127.0.0.1:8000/callback',
        'response_type' =>  'code',
        'scope' => '',
        'state' => $state,
    ]);
    return redirect('http://127.0.0.1:8000/oauth/authorize?' . $query);
});

Run Code Online (Sandbox Code Playgroud)

如果我尝试直接向http://127.0.0.1:8000/oauth/authorize发出请求,我会收到如下所示的错误响应。

不支持的资助类型

php oauth oauth-2.0 laravel laravel-passport

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

Laravel API:此路由不支持 POST 方法。支持的方法:GET、HEAD

我正在向 发送 post 请求http://localhost/projects/webdevlist/public/api/register并收到 405 错误:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
The POST method is not supported for this route. Supported methods: GET, HEAD.
Run Code Online (Sandbox Code Playgroud)

路线\api.php:

<?php

use Illuminate\Http\Request;

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::post('/register', 'Api\AuthController@register');
Run Code Online (Sandbox Code Playgroud)

Api\AuthController.php:

<?php

namespace App\Http\Controllers\Api;

use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class AuthController extends Controller
{
    public function register(Request $request)
    {
        $validatedData = $request->validate([
            'name' => 'required|max:55',
            'email' => 'required|email',
            'password' => 'required|confirmed'
        ]);

        $user = User::create($validatedData);

        $accessToken = $user->createToken('token')->accessToken;

        return response(['user' => $user, 'access_token' …
Run Code Online (Sandbox Code Playgroud)

php rest post laravel laravel-passport

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

哪个Passport版本兼容Laravel 5.7.15,默认安装不行

作为 Laravel 5.7 设置的一部分,我正在尝试使用以下命令安装 Passport:

composer require laravel/passport
Run Code Online (Sandbox Code Playgroud)

但它不起作用并给出错误:

Using version ^8.0 for laravel/passport
./composer.json has been updated
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Conclusion: remove laravel/framework v5.7.15
    - Conclusion: don't install laravel/framework v5.7.15
    - laravel/passport 8.x-dev requires illuminate/support ^6.0|^7.0 -> satisfiable by laravel/framework[6.x-dev], illuminate/support[6.x-dev, 7.0.x-dev, v6.0.0, v6.0.1, v6.0.2, v6.0.3, v6.0.4, v6.1.0, v6.2.0, v6.3.0, v6.4.1, v6.5.0, v6.5.1, …
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 laravel-5 laravel-passport

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

如何使用 Laravel Passport 令牌系统

我计划将 Laravel Passport System 用于 ANGULAR 6 API。按照文档安装。

但我有一点困惑。请尝试解决它。

1. 如何提供代币?

这是正确的方法吗?

/sf/ask/3794127921/
Run Code Online (Sandbox Code Playgroud)

OR 编码 LIKE 是正确的方法吗?:

$request->request->add([
            'username' => $request->email,
            'grant_type' => 'password',
            'client_id' => env('PASSWORD_CLIENT_ID'),
            'client_secret' => env('PASSWORD_CLIENT_SECRET'),
            'scope' => '',
]);
// forward the request to the OAuth token request endpoint and Return Token

$res = Route::dispatch(request()->create('oauth/token', 'POST', $this->loginCredentials($request)));
$this->api_response = json_decode($res->getContent());
return response()->json(['token' => $this->api_response,'usersDetail' =>  $user], 200);
Run Code Online (Sandbox Code Playgroud)

需要使用哪种方法以及为什么请详细说明?

2. 如何处理 Angular 的刷新令牌系统?

就像刷新(鼠标按钮刷新)需要调用Laravel API?应该如何?请用 Laravel 和 Angular 代码详细说明。

请详细回答这个问题。正在寻找好的答案!

php token oauth-2.0 laravel laravel-passport

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

Laravel Passport Token 不返回一系列代码

我目前很困惑为什么我的令牌响应 JSON 不提供令牌代码。

"token": {
    "token": {
        "name": "appToken",
        "abilities": [
            "*"
        ],
        "tokenable_id": 1,
        "tokenable_type": "App\\Models\\User",
        "updated_at": "2021-08-29T17:35:00.000000Z",
        "created_at": "2021-08-29T17:35:00.000000Z",
        "id": 7
    }
},
Run Code Online (Sandbox Code Playgroud)

这是响应的代码。

public function login()
{
    if (Auth::attempt(['email' => request('email'), 'password' => request('password')])) {
        $user = Auth::user();
        $success['token'] = $user->createToken('appToken')->accessToken;
       //After successfull authentication, notice how I return json parameters
        return response()->json([
          'success' => true,
          'token' => $success,
          'user' => $user
      ]);
    } else {
   //if authentication is unsuccessfull, notice how I return json parameters
      return response()->json([ …
Run Code Online (Sandbox Code Playgroud)

token laravel laravel-passport

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

Laravel 8:未定义方法“createToken”intelephense(1013)

我在使用 PHP intelephense 时遇到问题,createToken方法未定义。我不知道如何解决它。但是当我在邮递员中运行它时它就起作用了。我不知道为什么 vscode 不识别它。我还添加了use Laravel\Passport\HasApiTokens; 并在用户模型中使用 HasApiTokens。请帮助我,我已经没有选择了。感谢你们

public function login(Request $request)
{
    $login = $request->validate([
        'email' => 'required',
        'password'=> 'required',
    ]);
    if (!Auth::attempt($login)){
        return response()->json(['message' => 'error']);
    }
    $user = Auth::user();
    $token = $user->createToken('Token Name')->accessToken;
    return response()->json(['user' => $user, 'token' => $token]);
}
Run Code Online (Sandbox Code Playgroud)

laravel-passport intelephense laravel-8

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