Laravel Multiauth与Passport&Vue

时间:2019-05-31 15:15:39

标签: laravel vue.js oauth-2.0 laravel-passport laravel-authorization

我有一个带有VueJS的Laravel应用程序,该应用程序在前端具有对多种类型用户的身份验证,以及那些用户可以连接的面向公众的API。我正在使用Passport进行授权,特别是以下软件包:https://github.com/sfelix-martins/passport-multiauth

我正在利用以下代码在前端登录我的用户:

if (Auth::guard($guardType)->attempt($credentials)) {
    $token = Auth::guard($guardType)->user()->createToken('my-website')->accessToken;
    ...

对于公共API,我向/oauth/token发送了一个请求,以获取access_token用于后续请求。

由于我有3种类型的用户(到目前为止,由type表上的users列表示),每种用户都有自己的模型,因此我设置了6个防护措施:

'user_web' => [
    'driver' => 'session',
    'provider' => 'users',
],

'user_api' => [
    'driver' => 'passport',
    'provider' => 'users',
],

'admin_web' => [
    'driver' => 'session',
    'provider' => 'admins',
],

'admin_api' => [
    'driver' => 'passport',
    'provider' => 'admins',
],

'super_web' => [
    'driver' => 'session',
    'provider' => 'supers',
],

'super_api' => [
    'driver' => 'passport',
    'provider' => 'supers',
],

这是我发现可以同时运行后端和公共API用户身份验证的唯一方法,但它似乎本质上是不可扩展的。如果我有10个用户类型,我真的需要20个警卫吗?但是我确实需要后端上的每个用户类型都引用不同的模型(我认为,因为每个用户类型/模型在关系和方法上都有内在的差异),所以我不确定该如何做。

0 个答案:

没有答案