【问题标题】:How to access Sanctum package in custom laravel package如何在自定义 laravel 包中访问 Sanctum 包
【发布时间】:2022-10-13 08:35:45
【问题描述】:

我想访问在项目路线中运行良好的 laravel sanctum auth 我正在制作一个自定义的 api 包,它需要在自定义包路由中使用相同的 sanctum 身份验证

【问题讨论】:

  • 我不确定我是否理解这个问题。据我所知,sanctum 与 laravel 的身份验证机制集成,所以如果你在自己的包中使用它,它应该可以正常工作
  • 我用 api 的中间件添加了路由前缀

标签: laravel laravel-middleware laravel-sanctum laravel-authorization package-development


【解决方案1】:

为您的路线使用 auth sanctum 中间件,请参见下面的示例。

https://laravel.com/docs/9.x/sanctum#protecting-routes

【讨论】:

  • 感谢清除路由缓存现在它已启动并运行
【解决方案2】:

我遇到了同样的问题,但我发现数据包路由没有默认保护,并且无法通过数据包访问会话。

解决方案是将“网络”中间件添加到路由中。

前:

Route::get('/dashboard', [HomeController::class, 'index'])->middleware(['auth:sanctum'])->name('dashboard');

后:

Route::get('/dashboard', [HomeController::class, 'index'])->middleware(['web', 'auth:sanctum'])->name('dashboard');

对于那些不明白为什么会发生这种情况的人来说,问题很简单,'web' 守卫会自动添加到 web.php 文件中的路由中,但由于某些原因,包的路由不会发生这种情况.

为什么需要“网络”防护?

实际上,不需要“网络”保护,关键是它捆绑了各种中间件,包括:IlluminateSessionMiddlewareStartSession,这是处理用户会话的东西,所以如果你不想在路由中包含“网络”保护,您可以在appHttpKernel.php 文件中创建一个自定义中间件组,其中包含路由工作所需的一切,问题将得到解决。

【讨论】:

  • 我同意。我有一个自定义包,当我将 auth:sanctum 添加到 web.php 时,路由不起作用。它继续重定向到/dashboard。但是在我添加web 之后,它开始工作了。
猜你喜欢
  • 2020-08-15
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 2021-08-29
  • 2021-10-01
  • 2016-06-03
相关资源
最近更新 更多