laravel - 使用 Laravel Passport(隐式授予令牌)成功 Oauth 后正确重定向到 Vue SPA
问题描述
我有一个 Laravel 后端和一个 Vue SPA 前端。到目前为止,我已经设法使隐式授予令牌正常工作。我的问题是关于重定向。
认证成功后,Laravel 会重定向到http://localhost:8080/auth/callback#
access_token=AUTH_TOKEN&token_type=TOKEN_TYPE&expires_in=EXPIRES_IN 而不是http://localhost:8080/auth/callback?
access_token=AUTH_TOKEN&token_type=TOKEN_TYPE&expires_in=EXPIRES_IN(注意#和?)。验证成功后,我必须手动输入正确的 URL。
首先,如何确保将其正确重定向到正确的 URL?
解决方案
基于this Stack Overflow answer,我设法找到了解决方法。此功能是不是错误并重定向到 myurl.com?不能解决问题。这是我的解决方案。在我的路由器索引文件中,我有两个条目。
第一个是 OAuth API 将令牌返回到的重定向。beforeEnter 路由器方法获取 URL 字符串,将 # 替换为 ? 下一个方法将应用程序重定向到保存路径。
indexOf 方法获取 ? 在新格式的 url 中并将其传递给截断 http(s):// 部分的子字符串方法,以便该解决方案适用于 http 和 https。
截断导致?access_token
. 然后将其附加到下一个方法路径条目,因此,可以通过 route.query 对象从 /save 处的组件访问该道具。
{
path: `/auth/callback`,
beforeEnter: (to, from, next) => {
let url = window.location.href
if(url.includes('#')) {
let newUrl = url.replace('#', '?');
next({path: `/save${newUrl.substring(newUrl.indexOf('?'))}`})
}
next();
},
},
{
path: `/save`,
component: Auth,
props: (route) => ({
access_token: route.query.access_token
})
},
推荐阅读
- ios - 状态栏背景颜色和文本颜色在 iOS 13 beta 3 版本中不起作用
- java - 为什么 java 中的即时日期显示 1884 年之前的给定日期的时间 4:56:02Z
- jsf - 当 c:foreach 中有多个 p:datatable 时,事件 rowselect 与选定对象为 null
- google-chrome-extension - 我可以将本机应用程序连接到 chrome 扩展程序吗?
- android - 我正在尝试创建一个数据库和表。创建了数据库但没有创建表为什么?
- python - 捕获全分辨率静止图像
- arcgis - 使用 ArcGIS Javascript API 查看场景服务时出错 - 无法使用“in”运算符搜索错误的“代码”
- python - 尝试从列 DataFrame 创建 n-gram 时出错
- php - 为自然排序生成字符串的函数
- elementtree - 提供 XML 文件目录时的 XML ElementTree 解析困难