如何在Vue Router中处理片段GET参数?

时间:2018-06-01 15:04:42

标签: vue.js oauth-2.0 gitlab vue-router

使用Web应用程序流尝试Gitlab's OAuth的后端实现后,我在我的Vue前端尝试了隐式授权。

API发送给我的访问代码是片段url参数格式。这意味着它使用哈希符号#foo=bar&moo=var而不是标准?foo=bar&moo=var,它与默认的Vue路由器配置冲突。

在Vue路由器中尝试history mode后,我可以在其网址中使用#,我可以使用$route.hash访问Vue Router参数。我目前的问题是我必须自己拆分和修剪参数,如下所示:

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之外是否有一个标准的解决方案?

1 个答案:

答案 0 :(得分:2)

在我看来,我的代码片段是一个足够好的解决方案,尽管我期待在vue中支持OAuth标准。也许我的期望太高了?

这就是我最终使用的

const parsedParams = {};
this.$route.hash.split('&')
  .map(part => part.replace(/#/, '')
  .forEach(param => {
    const parts = param.split('=');
    parsedParams[parts[0]] = parts[1];
  });