Vue Router中如何处理fragment GET参数?
How to deal with fragment GET parameters in Vue Router?
在使用 Web 应用程序流尝试 Gitlab's OAuth 的后端实现后,我正在我的 Vue 前端中尝试隐式授权。
API发给我的访问码是片段url参数格式。这意味着它使用哈希符号 #foo=bar&moo=var
而不是标准的 ?foo=bar&moo=var
,这与默认的 Vue Router 配置冲突。
在 $route.hash
尝试 history mode in the Vue Router, which dosent use the #
in his urls, I can access the Vue Router 参数后。我目前的问题是我必须自己拆分 trim 参数,如下所示:
const params = this.$route.hash.split('&').map(part => part.replace(/#/, ''));
const parsedParams = {};
params.forEach(param => {
const parts = param.split('=');
parsedParams[parts[0]] = parts[1];
});
输出{ foo: "bar", moo: "var" }
在 VueRouter 中是否有更好或更标准的方法来处理片段参数?如果没有,是否有 Vue 之外的标准解决方案?
在我看来,我的代码片段是一个足够好的解决方案,尽管我期望 vue 中对 OAuth 标准的一些支持。可能是我期望太高了?
这就是我最终使用的
const parsedParams = {};
this.$route.hash.split('&')
.map(part => part.replace(/^#/, ''))
.forEach(param => {
const parts = param.split('=');
parsedParams[parts[0]] = parts[1];
});
您还可以使用
直接从此循环内对您的参数进行 uri 解码
parsedParams[parts[0]] = decodeURIComponent(parts[1]);
在使用 Web 应用程序流尝试 Gitlab's OAuth 的后端实现后,我正在我的 Vue 前端中尝试隐式授权。
API发给我的访问码是片段url参数格式。这意味着它使用哈希符号 #foo=bar&moo=var
而不是标准的 ?foo=bar&moo=var
,这与默认的 Vue Router 配置冲突。
在 $route.hash
尝试 history mode in the Vue Router, which dosent use the #
in his urls, I can access the Vue Router 参数后。我目前的问题是我必须自己拆分 trim 参数,如下所示:
const params = this.$route.hash.split('&').map(part => part.replace(/#/, ''));
const parsedParams = {};
params.forEach(param => {
const parts = param.split('=');
parsedParams[parts[0]] = parts[1];
});
输出{ foo: "bar", moo: "var" }
在 VueRouter 中是否有更好或更标准的方法来处理片段参数?如果没有,是否有 Vue 之外的标准解决方案?
在我看来,我的代码片段是一个足够好的解决方案,尽管我期望 vue 中对 OAuth 标准的一些支持。可能是我期望太高了?
这就是我最终使用的
const parsedParams = {};
this.$route.hash.split('&')
.map(part => part.replace(/^#/, ''))
.forEach(param => {
const parts = param.split('=');
parsedParams[parts[0]] = parts[1];
});
您还可以使用
直接从此循环内对您的参数进行 uri 解码 parsedParams[parts[0]] = decodeURIComponent(parts[1]);