在成功使用Laravel Passport(隐式授予令牌)进行Oauth之后,正确重定向到Vue SPA

时间:2018-12-14 12:33:14

标签: laravel laravel-5 vuejs2 laravel-passport

我有一个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和?)。成功认证后,我必须手动输入正确的URL。

如何首先确保将其正确重定向到正确的URL?

1 个答案:

答案 0 :(得分:0)

基于this堆栈溢出的答案,我设法找到了解决方法。此功能不是错误,并且重定向到myurl.com吗?不能解决问题。这是我的解决方案。在我的路由器索引文件中,我有两个条目。

第一个是OAuth API将令牌返回到的重定向。 beforeEnter路由器方法获取URL字符串,将#替换为?。然后下一个方法将应用重定向到保存路径。

indexOf方法获取?的索引。

中输入新格式的url,并将其传递给substring方法,该方法将截断http(s)://部分,以便此解决方案既适用于http也适用于https。

截断结果为?access_token 。然后将其附加到下一个方法路径条目,结果可以通过route.query对象从/ save的组件访问prop。

{
  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
  })
},