Angular Google OAuth重定向无法启用html5mode

时间:2017-03-28 14:57:27

标签: asp.net angularjs html5

我正在开展项目,我们正在使用Google OAuth API注册并登录用户以使用该应用程序。

该项目基于angularjs和asp.net。

当未启用html5mode时,登录过程正常,但出于SEO原因,我们需要使用以下命令从URL中删除散列(#):

$locationProvider.html5Mode(true);

在这种情况下,身份验证后收到的响应始终采用

格式
http://site/#access_token=...

对于我们正在使用的角度的路线配置

$routeProvider.when('/access_token=:accessToken', {
      templateUrl: '/app/identification/identification.html',
      controller: 'identificationGoogle'
});

问题是当启用html5模式时,重定向完成后,即使浏览器窗口网址是以前的形式,也不会激活关联的控制器。

在刷新页面之前它不起作用。

对于这个问题有任何解决方案,以避免重新加载页面。

使用的角度版本是:1.3.15。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

解决方案是添加使用html5模式时角度所需的基本标记

Example: x = HILLARY, y = HILARI(query term)
Qgrams
$$HILLARY$$ -> $$H, $HI, HIL, ILL, LLA, LAR, ARY, RY$, Y$$
$$HILARI$$ -> $$H, $HI, HIL, ILA, LAR, ARI, RI$, I$$
number of q-grams in common = 4

并将Google开发者控制台上的密钥配置中的redirect_uri更改为

<base href="/">

而不是

http://site/

问题发生了,因为重定向网址与基本网址不同。

所以当对旧网址进行重定向时,后来与基本网址不匹配,因此angular的路由无法正常工作。 在这种情况下,浏览器会自动重定向到

http://site/index.cshtml

所以在显式重新加载页面后,基本网址和加载的网址在这种情况下匹配,因此路由工作正常。