如何在 laravel 护照中实现多身份验证

     2023-03-10     218

关键词:

【中文标题】如何在 laravel 护照中实现多身份验证【英文标题】:how to implement multiauth in laravel passport 【发布时间】:2018-09-01 20:51:57 【问题描述】:

我有两个用户 admin/user 我想验证这两个用户的 api, 它适用于一个用户,但不适用于管理员

看看我尝试了什么 在管理控制器中

public function login(Request $request)

//        $res=;
   // dd ($res);
     if(Auth::guard('admin')->attempt(['email' =>  $request->email, 'password' =>  $request->password]))
    

  // if successful, then redirect to their intended location


        $user = auth()->guard('admin')->user();
        $success['token'] =  $user->createToken('admin')->accessToken;
        return response()->json(['success' => $success], $this->successStatus);
    
    else
        return response()->json(['error'=>'Unauthorised','email'=> $request->email,'password'=> $request->password], 401);
    

在 api.php 中

Route::prefix('admin')->group(function () 

Route::post('login', 'API\Admin\AdminController@login')->name('admin.login');
Route::post('register', 'API\Admin\AdminController@register')->name('admin.register');

Route::group(['middleware' => 'auth:admin-api'], function()
 Route::post('get-details', 'API\Admin\AdminController@getDetails');
);


);

当我尝试为管理员调用尝试函数时,它给了我错误

BadMethodCallException 方法 Illuminate\Auth\RequestGuard::attempt 不存在。

您能否分享您对如何在 laravel/passport 中进行多身份验证的想法

【问题讨论】:

我尝试了一种类似的方式来验证两个用户但我失败了,所以我在我的用户表中添加了一个枚举“类型”字段。 所以没有办法在 laravel/passport 中为 api 做多重身份验证? 查看这个 repo github.com/sfelix-martins/passport-multiauth ok 会检查的 【参考方案1】:

您可以在 laravel 护照中实现多重身份验证,您必须按照以下步骤操作

1) 在我创建的情况下创建 4 个警卫

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

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
     ],
     'admin-api' => [
        'driver' => 'passport',
        'provider' => 'admin',
    ],
     'admin' => [
        'driver' => 'session',
        'provider' => 'admin',
    ],
],

然后在控制器中记录该类型的用户时,请确保您使用的是 sessio 驱动程序保护,例如

用户控制器.php

 public function login()
    if(Auth::attempt(['email' => request('email'), 'password' => request('password')]))
        $user = Auth::user();
        $success['token'] =  $user->createToken('MyApp')->accessToken;
        return response()->json(['success' => $success], $this->successStatus);
    
    else
        return response()->json(['error'=>'Unauthorised'], 401);
    

在 admincontroller.php 中

 public function login()
    if(Auth::guard('admin')->attempt(['email' => request('email'), 'password' => request('password')]))
        $user = Auth::guard('admin')->user();
        $success['token'] =  $user->createToken('admin')->accessToken;
        return response()->json(['success' => $success], $this->successStatus);
    
    else
        return response()->json(['error'=>'Unauthorised'], 401);
    

并且在检查令牌时使用护照司机警卫,例如

public function getDetails()

    $user = Auth::guard('admin-api')->user();
    return response()->json(['success' => $user], $this->successStatus);

在中间件中

Route::group(['middleware' => 'auth:api'], function()
 Route::post('admin/get-details', 'API\Admin\AdminController@getDetails');
);

【讨论】:

【参考方案2】:

我设法通过中间件做到了,希望这会对你有所帮助 - Laravel Passport Multiple Authentication using Guards

【讨论】:

护照身份验证在 laravel 5.3 中不起作用

】护照身份验证在laravel5.3中不起作用【英文标题】:Passportauthenticationisnotworkinginlaravel5.3【发布时间】:2017-03-0605:41:46【问题描述】:我已经按照此处的文档使用护照设置了Laravel:https://laravel.com/docs/5.3/passport.我在API路由中编写... 查看详情

使用身份验证护照系统覆盖 laravel 中 apis url 的身份验证重定向

】使用身份验证护照系统覆盖laravel中apisurl的身份验证重定向【英文标题】:Overrideauthredirectionofapisurlinlaravelwithauthpassportsystem【发布时间】:2018-11-0601:17:27【问题描述】:我创建了一些运行良好的api。现在,当有人点击在Web浏览... 查看详情

laravel 护照未经身份验证返回

】laravel护照未经身份验证返回【英文标题】:laravelpassportreturnsunauthenticated【发布时间】:2017-04-2419:21:32【问题描述】:我正在创建一个使用Passport来管理身份验证的api。我已经用thedocs设置了Passport。问题我无法登录。我不断收... 查看详情

我们如何在 Laravel 中实现自定义的仅 API 身份验证

】我们如何在Laravel中实现自定义的仅API身份验证【英文标题】:HowdoweimplementcustomAPI-onlyauthenticationinLaravel【发布时间】:2020-09-1019:04:42【问题描述】:这不是一个非常需要答案的问题,但欢迎提供进一步的建议和答案和建议。我... 查看详情

Laravel 5.6 护照 API 身份验证在获取请求中不起作用

】Laravel5.6护照API身份验证在获取请求中不起作用【英文标题】:Laravel5.6passportapiauthenticationnotworkingingetrequest【发布时间】:2018-10-0309:12:00【问题描述】:我正在制作单页应用程序,在处理get请求时,我已经通过了X-CSRF-TOKEN和X-Req... 查看详情

使用外部 Laravel 护照流明 api 进行 Laravel 客户端身份验证

】使用外部Laravel护照流明api进行Laravel客户端身份验证【英文标题】:LaravelclientauthentificationwithexternalLaravelpassportlumenapi【发布时间】:2020-03-2509:38:51【问题描述】:我一直在网上寻找,但我找不到任何方法。让我解释一下,我有... 查看详情

如何在节点/套接字应用程序中验证 laravel 护照 API 令牌?

】如何在节点/套接字应用程序中验证laravel护照API令牌?【英文标题】:Howtoverifylaravelpassportapitokeninnode/socketapplication?【发布时间】:2018-10-2602:36:09【问题描述】:我的问题是关于laravel应用程序中的OAuth护照令牌,它也使用套接... 查看详情

Laravel 5.6 护照未经身份验证

】Laravel5.6护照未经身份验证【英文标题】:Laravel5.6PassportUnauthenticated【发布时间】:2019-02-2823:32:57【问题描述】:我关注了Laravel官方文档以及以下文章https://medium.com/techcompose/create-rest-api-in-laravel-with-authentication-using-passport-133a167... 查看详情

身份验证用户提供程序 [passport] 未使用 laravel 护照定义

】身份验证用户提供程序[passport]未使用laravel护照定义【英文标题】:Authenticationuserprovider[passport]isnotdefinedwithlaravelpassport【发布时间】:2019-03-2710:05:28【问题描述】:我在laravel中有一个api,我使用护照进行身份验证。在我的confi... 查看详情

错误状态 401 错误未经身份验证的 laravel 护照

】错误状态401错误未经身份验证的laravel护照【英文标题】:errorstatus401errorunauthenticatedlaravelpassport【发布时间】:2019-03-0807:26:54【问题描述】:这是我第一次使用laravel护照这是我的config/auth.php\'guards\'=>[\'web\'=>[\'driver\'=>\'se... 查看详情

如何在 laravel 中进行前端 api 身份验证

】如何在laravel中进行前端api身份验证【英文标题】:howtomakefrontendapiauthenticationinlaravel【发布时间】:2019-02-0710:17:25【问题描述】:我在Laravel中使用护照包创建了一个API身份验证系统。当用户每次登录时创建个人访问令牌以及注... 查看详情

Laravel 通过生成的令牌进行身份验证,无需护照和 jwt

】Laravel通过生成的令牌进行身份验证,无需护照和jwt【英文标题】:Laravelauthbygeneratedtokenwithoutpassportandjwt【发布时间】:2018-05-2810:12:09【问题描述】:我正在尝试通过在laravel5.5中使用md5加密方法从登录用户的用户名中检查生成... 查看详情

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

】Laravel护照授权令牌在生成新令牌时过期【英文标题】:LaravelpassportAuthorizationtokenexpireongeneratingnewtoken【发布时间】:2018-04-1108:21:40【问题描述】:我正在使用laravel5.5和API路由的护照身份验证。我正在使用不记名令牌。问题是... 查看详情

护照后如何使用承诺登录。通过社会服务进行身份验证。 KeystoneJS + 护照

】护照后如何使用承诺登录。通过社会服务进行身份验证。KeystoneJS+护照【英文标题】:Howtodosigninwithpromisesafterpassport.authenticatewithsocialservices.KeystoneJS+Passport【发布时间】:2017-04-2218:08:43【问题描述】:除了myquestioninrepository我需... 查看详情

我如何测试 Laravel 护照 API 端点

】我如何测试Laravel护照API端点【英文标题】:HowdoitestLaravelpassportAPIendpoints【发布时间】:2019-09-1500:25:55【问题描述】:所以我想对我的API端点进行单元测试。我正在使用Laravel5.8,api身份验证是通过Passport完成的我有以下测试:p... 查看详情

Laravel 护照刷新令牌

】Laravel护照刷新令牌【英文标题】:Laravelpassportrefreshtoken【发布时间】:2019-05-1510:18:56【问题描述】:我正在使用Laravel5.5版,使用Passport进行身份验证。我已成功创建令牌并可以使用auth:api中间件访问它。但每当用户登录系统时... 查看详情

如何使用护照身份验证更新包含 jwt 的 cookie

】如何使用护照身份验证更新包含jwt的cookie【英文标题】:Howtoupdatecookiecontainingjwtusingpassportauthentication【发布时间】:2019-07-0705:03:23【问题描述】:我有一个包含签名jwt的cookie,有效期为5分钟。jwt包含基本用户信息(用于身份... 查看详情

使用护照 jwt 进行身份验证

...教程:https://devdactic.com/restful-api-user-authentication-2/,但我如何限制用户访问页面 查看详情