问题标签 [laravel-sanctum]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1833 浏览

postman - SQLSTATE [23000]:违反完整性约束:1048 列“tokenable_id”不能为空

我想用 2 个模型使用 laravel sanctum

这是用户模型的代码

}

功能登录的用户控制器是:

}

并且令牌是真实的,并且带有中间件('auth:sanctum')的所有路由都在正常工作,但我想使用模型护士并首先编写此代码:模型护士:

}

nurcescontroller 中的登录功能是:

} 当使用邮递员并使用此地址登录时 - 此错误:

0 投票
1 回答
3059 浏览

laravel - 如何使用 Laravel/Sanctum 在 SPA 应用程序中实现 ForgotPasswordController?

我正在使用 Laravel 7.x 和 sanctum。登录正常,我想从我的 SPA 应用程序中创建一个忘记密码选项。

我在基础知识上苦苦挣扎,因为文档中的大多数示例都依赖于身份验证脚手架。到目前为止,我已经设法获得以下内容:

  • 我有一个控制器类,它使用一个名为ForgotPasswordController的方法调用,该方法reset接收要通过 POST 重置的电子邮件。
  • 我创建了一个对象:$user = User::where('email', $email)->get()->first();

在这一点上,我对架构太陌生了,不知道下一步该去哪里,无论是密码门面,我在Illuminat\Auth\Password命名空间中看到了一些额外的类。我的目标是创建一个过期的令牌,通过默认的电子邮件配置将其通过电子邮件发送给用户(我知道如何发送电子邮件/设计模板),然后能够进行网络服务调用以允许解析密码。

以下是我认为我知道的...

  • 我已经CanResetPassword在我的用户模型上设置了特征,我认为这是支持密码重置的本机方法所必需的
  • 我相信目标是创建一个针对用户电子邮件的重置令牌,该令牌会在一段时间后过期,然后将该令牌附加到电子邮件中的 url 上(我不知道围绕令牌生成的架构含义表行
  • 有一个Password带有sendResetLink方法的外观 - 但此方法不适用于 spa 应用程序,因为客户端应用程序的基本 url 会有所不同,所以我假设必须重新编写本机的东西。事实上,调用这个方法会返回一个错误Route [password.reset] not defined

我假设我需要密码 Facade,如果需要,生成令牌的方法是什么?我应该只是通过电子邮件发送附加令牌的链接,还是有其他架构考虑来支持令牌到期?

如果我的问题有缺陷,我深表歉意,我对架构不清楚,所以我在做假设。

0 投票
0 回答
2234 浏览

laravel - laravel sanctum 上 SSR 模式 Nuxt 的认证问题

设置基于Laranuxt - Laravel 7 和 Nuxt 的组合。使用 PHP 7.4.8 在 Windows 上运行

我一直在尝试通过 Laravel 7 和 Sanctum 身份验证器模块对 nuxt 应用程序上的用户进行身份验证。我现在得到一个似乎没问题的回应?

接下来我尝试获取用户数据,但是我不能,因为我没有授权;

但是,如果我在 Nuxt 中登录后转到 laravel 前端,我已经登录:

在此处输入图像描述

试图打开http://localhost:8000/api/user让我进入一个不断循环的 api/user 和登录之间的重定向以结尾ERR_TOO_MANY_REDIRECTS

nuxt.config.js:

.env

配置\sanctum.php

配置\app.php

关于如何通过 Laravel API 在 Nuxt 上接收需要 autentication 的内容的任何想法或提示?也许需要代理?

编辑; 检查 laravel 中的调试结果,laravel_session cookie 和 XSRF-TOKEN 从第一次登录 Nuxt 到 Laravel 的“set-cookie”响应一直匹配。执行 /api/user 时也会匹配相同的 cookie。

来自 http://localhost:3000/auth/sanctum/csrf-cookie 的响应

然后触发 http://localhost:3000/auth/login (返回状态码 204)请求:

回复:

当触发 OK 状态码时,http://localhost:3000/auth/api/user 应该正确响应,但它没有;要求:

回复:

现在通过 Nuxt-Proxy 运行。

0 投票
8 回答
20750 浏览

php - 使用 Laravel Sanctum 获取用户数据

我之前使用的是 Laravel 的内置 api 令牌身份验证,但我想为不同的客户端提供多个 api 令牌,并且使用 Laravel 7.x,我正在尝试迁移到 Laravel Sanctum。

API 似乎可以毫无问题地对用户进行身份验证,但是当我尝试使用 获取用户数据时Auth::user();,它返回 null。也 Auth::guard('api')->user();返回 null 。

我应该使用什么作为 Auth 守卫?还是根据提供的令牌获取用户数据的正确方法?

非常感谢....

0 投票
1 回答
99 浏览

laravel - 使用 Laravel sanctum 进行 Laravel 默认身份验证返回 419 错误代码

我正在使用 Laravel Sanctum 进行身份验证。我没有任何 SPA 应用程序,我想要 Laravel Sanctum 进行默认身份验证。我已按照文档进行操作,但出现 419 错误代码。

0 投票
2 回答
3162 浏览

laravel - Laravel Sanctum - 登录用户最佳实践

我想知道检查用户是否仍在客户端登录的最佳做法是什么。

假设用户登录。如果成功,它将保存在状态中,如下所示:

现在,如果用户刷新他们的浏览器,状态就会丢失,但laravel_sessionandXSRF-TOKEN仍然可用且有效。

在每次重新加载页面时添加中间件以请求检索当前登录用户的信息是否有意义?像这样的东西?:

编辑

请注意,我在 SPA 模式下使用 Sanctum。所以没有代币。

0 投票
1 回答
410 浏览

php - 在登录过程中添加操作

我正在构建一个 Laravel 7.x。将结合标准身份验证(用户通过表单登录)和通过 Sanctum 的 API 身份验证(基于令牌)的应用程序。我想在成功的用户身份验证期间生成一个 sanctum API 令牌。为此,我需要连接到登录流程。

标准身份验证通过运行php artisan ui vue --auth.

当我检查时routes/web.php,我只能看到据称Auth::routes();在引擎盖下生成了我在以前的 Laravel 版本中习惯的经典路由。从我链接的答案中,/login生成的路由定义如下所示:

但是,当我检查我LoginController的脚手架时,我看不到任何应该由Auth::routes(). 那里什么都没有,看起来一切都对我作为开发人员透明地处理:

如何连接到登录流程并向其中添加我自己的操作?

0 投票
1 回答
1188 浏览

laravel - Laravel Sanctum 无法使用 Postman 登录

我已经设置 Laravel 使用自定义的“SESSION_DOMAIN”和“SANCTUM_STATEFUL_DOMAINS”。但是我不能使用邮递员登录。我做了什么:

  • 向“/sanctum/csrf-cookie”发出 GET 请求 - 将 XSRF cookie 值保存在环境变量中:xsrfToken
  • 添加了值为 {{xsrfToken}} 的标头 X-XSRF-TOKEN

每次我发出发布请求时,我都会得到:“Illuminate\Contracts\Encryption\DecryptException:有效负载无效。在文件 ~/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php 中的第 195 行”如果我尝试不带 X-XSRF-TOKEN 标头我收到 419 Page Expired 错误。有人遇到过这个问题吗?谷歌搜索时,我的问题似乎还没有答案。

0 投票
4 回答
1172 浏览

php - Laravel Sanctum 默认模型定制

我在我的 Laravel 应用程序 `MongoDB 中使用 composer 包作为数据库驱动程序:

https://github.com/jenssegers/laravel-mongodb

默认情况下,Laravel 模型扩展Illuminate\Database\Eloquent\Model类。

但是当我使用MongoDB then my models must extend the Jenssegers\Mongodb\Eloquent\Model` 类而不是默认的 Laravel 类时。

我现在如何将 Laravel Sanctum 默认扩展模型类替换Laravel\Sanctum\PersonalAccessTokenJenssegers\Mongodb\Eloquent\Model.

例子

现在我可以在vendor文件夹中执行此操作,但我认为这是不正确的方式。如何正确解决这个问题?

0 投票
1 回答
4901 浏览

laravel - 带角色的 Sanctum 身份验证

我正在尝试使用角色(用户/管理员)实现 Sanctum SPA 身份验证。问题是我想使用单独的管理表。阅读与该主题相关的所有 laravel 文档,但没有结果。试图在config/auth.php中创建一个新的守卫和提供者,但未能成功将其与 Sanctum 结合使用。任何额外的资源和想法如何做到这一点将不胜感激!:)