问题标签 [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 回答
111 浏览

reactjs - 如何将 Laravel Sanctum 与两个不同的前端和后端域一起使用?

前端:localhost:3002 后端:sanctum.local

如何在env文件中配置这两个字段:

SANCTUM_STATEFUL_DOMAINS= SESSION_DOMAIN=

当我尝试登录时,我得到 419 未知状态。

0 投票
0 回答
201 浏览

javascript - Laravel Vue spa 获取当前身份验证用户详细信息

我正在使用 Vue 和 Laravel Sanctum 来处理登录。这是我的 html 表单

这是用于处理登录的方法

因此,这确实处理了登录,但除非我刷新页面,否则我无法获取经过身份验证的用户的详细信息,我不想这样做。

为了试图规避这个问题,我将经过身份验证的用户的详细信息从我的控制器传递到我的视图

然后在我看来,我将它作为道具传递给我的 Vue 组件

在我的组件中

但是当我{{ auth_user }}在我的组件中时,它也仅在页面刷新时才有效,并且我希望在使用 Sanctum 登录后立即更新这些身份验证详细信息。帮助将不胜感激。

0 投票
3 回答
4569 浏览

php - React + Laravel + Sanctum 用于 api 令牌认证(不是 cookie)

我正在尝试使用中间件 Sanctum 让 React 和 Laravel 一起工作。

我可以阅读许多尝试使用基于 cookie 的设置来执行此操作的示例,但我正在尝试将令牌设置用于纯 API 方法。我这样做是因为我想准备后端以在没有 cookie 的移动应用程序中使用。

这是我设置的一部分:

/后端/路由/api.php:

/frontend/store/api.js

我的问题是,当访问登录路由时,它会强制进行 CSRF 令牌检查。即使登录路径不应该由 Sanctum 保护。当我登录并且还没有要附加到请求的令牌时,这当然会失败。据我了解,仅在登录后访问受保护的路由时才需要令牌。我已经通过将其重命名为假的东西并收到错误来仔细检查它是否正在访问正确的路线。

我在使用 Sanctum 时做错了什么,还是 Sanctum 不是 api 令牌的首选用途?我应该改用 JWT 吗?

预先感谢您的帮助。<3

0 投票
1 回答
359 浏览

laravel - 为什么 sanctum 中间件在 Laravel 中返​​回错误(未经授权的 401)?

我想用 laravel sanctum 在 SPA 中进行身份验证。我设置了如下代码的环境。但是在我登录和下一个 api 请求后,就会发生错误。为什么?。第一个请求返回 X-CSRF-TOKEN 。据我所知,axios在我登录后会自动提交X-CSRF-TOKEN。请给我建议。

api.php

LoginController 的登录方法

登录.tsx

卡内尔.php

数据库.php

在此处输入图像描述

0 投票
2 回答
3398 浏览

laravel - 使用 laravel Sanctum 和 api 令牌身份验证获取用户时出现 401(未经授权)

我观看了本教程以使用 laravel sanctum 进行 api 令牌身份验证。登录时,我检索了添加到 axios 标头的 Bearer 令牌。但是当尝试通过 /api/user 获取用户时,我得到一个 401。请注意,我不使用 CSRF 令牌,因为我使用的是Sanctum Api 令牌身份验证而不是 SPA 身份验证。

我有一个用于所有 axios 请求的 api 文件,看起来像

一些认证功能

登录控制器

在 routes/api.php 中路由

我在我的用户模型中使用 HasApiTokens,在 config/sanctum.php 中有 'prefix' => 'api',在 config/cors.php 中有 'paths' => ['api/*'] 并且有 'api' => [ 'driver' => 'sanctum',...] 在我的 config/auth.php

我看了该教程两次并复制了所有内容(除了我使用的是 Quasar 框架),搜索了整个谷歌和 stackoverflow ......我不明白,请帮忙!我确实收到了不记名令牌,所以应用程序认为我已登录,但无法获取我的用户数据。在上面提到的教程的第 1 部分中,也做了同样的事情,但是使用 SPA 身份验证 (csrf) 并且这个确实有效!

更新

似乎它适用于http://127.0.0.1:8000/上的 php artisan serve ,但不适用于http://some-domain.local或公共域上的MAMP

为什么...

0 投票
1 回答
918 浏览

laravel - 使用 Laravel Sanctum 进行 Vue SPA 身份验证

我目前正在将 Laravel Sanctum 用于我的 Laravel 项目和 Vue SPA。我只是想问一下,我必须创建自己的控制器来处理登录和注册,还是只使用运行 php artisan ui vue --auth 时安装的 Laravel 默认控制器。我遵循了一些应用这两种方案的教程,但我似乎无法决定哪种方法更好。

0 投票
0 回答
35 浏览

php - Hash::check 成功,但 Auth::attempt 失败

所以我是 Laravel 的新手。只是通过一个测试项目来学习。

我正在使用 Vue 制作带有 Laravel 8 和 Sanctum 后端的 SPA。

我成功创建了一个注册系统,但无法登录。

下面是我的代码。

注册功能

登录功能

注意:我在 Auth::attempt() 函数中尝试了“密码”和“密码”,它不起作用

注 2:注释 'return $check' 在浏览器控制台中返回 '1'。这意味着散列密码(在用户模型中加载)与请求中的密码匹配......对吗?

最后,我的用户表 数据库

自昨晚以来,我一直在尝试解决此问题,并通过多次谷歌搜索并尝试了一些方法,但没有任何效果。

我也找不到直接调试 Auth::attempt 方法的方法,就像我不知道发生了什么故障一样。

请帮忙……因为这个,我一直在拔头发。

更新:所以我只是在搞砸......我将表中的列名从(电子邮件,密码)更改为(电子邮件,密码)......并且在我的代码中,恢复为 $request->only('email', 'password')

出于某种原因......它有效......我仍然不知道为什么我会遇到这个错误以及如果我的表列名被大写,我怎么可能让它工作(我喜欢这样......:/ )

因此,尽管我的问题已解决 ATM ...对此的任何解释将不胜感激...

0 投票
2 回答
2842 浏览

laravel - Laravel Sanctum 在不创建新令牌的情况下检索 PlainTextToken

我正在用 vue 和 laravel 创建一个 SPA。我知道我可以为每个用户发出令牌并将其作为新条目存储在数据库中。从文档中,我只能使用 laravel 以散列格式列出用户可用的所有令牌,并且$token->plainTextToken无法从 eloquent 查询中访问该属性。我同时使用普通身份验证和密室身份验证,有时我需要将令牌还给用户。我必须在每次页面刷新时发出新令牌还是有办法解决这个问题?

0 投票
1 回答
826 浏览

php - laravel 8 中的单元测试控制器

我对在 Laravel 中进行测试非常陌生,我正在使用 laravel 8,我想测试的功能是:

当我运行测试时,我收到此错误:

ErrorException:试图获取非对象的属性“id”

感谢您的任何帮助!

0 投票
1 回答
823 浏览

angular - Laravel 8、Sanctum 和 Angular 8

我在linux中有主题环境。我已经使用 EnsureFrontendRequestsAreStateful、.env 进行了 cors.conf、session.conf、kernel:api 的配置。我阅读的所有文档中都包含所有这些内容。Laravel 在 localhost:8000 Angular 在 localhost:4200

尤其是:

内核.php:

cors.php

圣所.php

在 .env 中

在 Angular 中,当我得到 csrf-cookie 响应是:

Bloccata Richiesta multiorigin (cross-origin): il criterio di corrispondenza dell'origine non consente la lettura della risorsa remota da http://localhost:8000/sanctum/csrf-cookie。动机:richiesta CORS 非 riuscita。

这是我的堆栈:

在此处输入图像描述

我哪里错了?谢谢之前。