我想使用 Laravel Passport 验证令牌。我的 API 的使用者将通过授权标头将令牌作为不记名令牌传递,并且我希望 Laravel Passport 返回我(如果是有效令牌)。
我不想使用中间件,我的 API 将位于另一个 Laravel 项目中,但我希望该项目调用 Laravel Passport 服务器只是为了检查令牌是否有效,我如何检查令牌?
我正在正确发行令牌,只需验证它们,但我不知道如何:(
我正在我的 Laravel 控制器上做一个简单的验证:
public function updateInfo(Request $request) {
$validator = $request->validate([
"name" => ["string", "nullable"],
"email" => ["email", "nullable"],
"currentPassword" => ["password:api"]
]);
return json_encode($validator);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果失败,此验证会将我重定向到主页,并且我正在通过 AJAX 发出请求,我知道 Laravel 检测到请求何时通过 Ajax,但它仅在正常请求时才有效(在我Content Type application/json在正文中发送标头并在正文中发送了一个普通的 JSON
但是 Laravel 无法检测何时 te Ajax 请求不是Content Type application/json,我使用的FormData()是 JavaScript 对象,因此,我没有发送 header Content Type application/json,并且在正文中我发送了 FormData 对象。
我认为它模拟了重新加载页面的典型 HTTP 请求,因此 Laravel 无法检测到它,但它给我的 ajax 响应带来了麻烦,因为 Laravel 响应重定向,而在我的 Ajax 响应中,我正在捕获 HTML 代码的主页。
我能做什么?
我\xc2\xa0 在使用受密码保护的密钥通过 SSH 连接我的工作台时遇到问题,我不知道必须将密码密钥放在工作台中的何处,它告诉我“访问被‘无’拒绝。可以进行身份验证继续:公钥”。
\n我的凭据正确(我可以使用同一用户通过终端 SSH 连接),所以这让我认为这是因为我的 ssh 密钥受密码保护。
\n我可以将密码放在 Workbench 中的什么位置?
\n我已经使用 Laravel Passport 实现了 OAuth 系统,但该系统的登录和所有身份验证均由具有 Inertia 的 Laravel Jetstream 处理。
当我想要请求代码(使用授权代码授予)时,我的应用程序将我重定向到我的 OAuth 服务器,该服务器在继续之前要求我登录,此屏幕是 Laravel Jetstream 使用 Inertia (Vue) 登录生成的屏幕。当我登录时,它会将我重定向到授权页面,但是这个重定向很奇怪,因为该页面显示在 Vue(惯性)页面内,浏览器中的 URL 不会更新,并且如果我接受授权请求它将我重定向回我的应用程序,但重定向位于同一个 Vue 页面内,我的意思是,URL 与我的 OAuth 服务器登录名相同,但视图是请求代码的应用程序。
我认为 Vue 中的重定向存在问题,因为授权页面没有使用 Inertia(Laravel Passport 的默认授权页面),而且我不知道如何修复它,你能帮我吗?
这是一张图片:
正如你所看到的,它似乎是在模态中,但是是一个惯性错误页面,里面显示的是授权页面,是一个重定向错误,我不知道如何修复