为了账号安全,请及时绑定邮箱和手机立即绑定

经过身份验证的用户使用 guard 时出错,并且可以访问某些模型

经过身份验证的用户使用 guard 时出错,并且可以访问某些模型

PHP
杨魅力 2022-09-12 09:58:24
我正在使用灯塔-php来制作一个 graphql api,并且我在更改中间件(它将在新版本中被弃用)指令时遇到了麻烦。extend type Query @middleware(checks: ["auth:api"]) {    task(id: ID @eq): Task @can(ability: "view" find:"id") @find    mytasks: [Task!]!}使用此代码效果很好。我的意思是,系统会检查用户是否已记录,并根据策略检查用户是否可以访问其任务,但是当我尝试将指令更改为如下所示的指令时:@middleware@guardextend type Query @guard(with: ["api"]){    task(id: ID @eq): Task @can(ability: "view" find:"id") @find    mytasks: [Task!]!}始终返回用户未经身份验证。但是,在最后一种情况下,如果我删除@can指令,系统将检查用户是否已记录(但我需要根据策略检查用户是否可以访问指定的任务)。我正在使用这些版本的软件包:"joselfonseca/lighthouse-graphql-passport-auth": "^3.0",    "laravel/framework": "^6.2",    "laravel/passport": "^8.2",    "laravel/tinker": "^2.0",    "mll-lab/laravel-graphql-playground": "^2.0",    "nuwave/lighthouse": "^4.8"有人尝试过这种麻烦吗?谢谢。
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

我解决了它。


我们必须使用以下命令设置配置/身份验证.php文件:


/*

|--------------------------------------------------------------------------

| Authentication Defaults

|--------------------------------------------------------------------------

|

| This option controls the default authentication "guard" and password

| reset options for your application. You may change these defaults

| as required, but they're a perfect start for most applications.

|

*/


'defaults' => [

    'guard' => 'api',

    'passwords' => 'users',

],


/*

|--------------------------------------------------------------------------

| Authentication Guards

|--------------------------------------------------------------------------

|

| Next, you may define every authentication guard for your application.

| Of course, a great default configuration has been defined for you

| here which uses session storage and the Eloquent user provider.

|

| All authentication drivers have a user provider. This defines how the

| users are actually retrieved out of your database or other storage

| mechanisms used by this application to persist your user's data.

|

| Supported: "session", "token"

|

*/


'guards' => [

    'web' => [

        'driver' => 'session',

        'provider' => 'users',

    ],


    'api' => [

        'driver' => 'passport',

        'provider' => 'users',

        'hash' => false,

    ],

],


查看完整回答
反对 回复 2022-09-12
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

与此同时,我发现了文档中提到的另一种解决方案:

https://lighthouse-php.com/master/security/authentication.html#global

简而言之,我需要将尝试身份验证中间件添加到灯塔配置中。我使用这个@auth(警卫:“api”)添加到我的所有类型。


查看完整回答
反对 回复 2022-09-12
  • 2 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号