我正在编写一个角度应用程序,我需要接受带有片段哈希的URL(OAuth 2.0)。缩短它看起来像这样。
http://example.com/#access_token=918f4d6e90b25b13ef66a
加载此URI时,路由进程无法识别路径,并且正确地将应用程序重定向到默认路由。问题是,这样我松开了哈希,我再也无法解析它了。
我想要做的是在删除之前解析哈希。 您对可能的解决方案有任何想法吗?
感谢。
P.S。在这个应用程序中我不能使用HTML5模式。启用它可以正常工作。
答案 0 :(得分:1)
你只需要定义一条额外的路线来" catch"并在重定向到另一条路线之前保存访问令牌 E.g:
$routeProvider
...
.when('/access_token=:accessToken', {
template: '',
controller: function ($location, $routeParams, AuthService) {
AuthService.login( // `AuthService` will save the token
$routeParams.accessToken); // The token is available in `$routeParams
// under the key `accessToken`
$location.path('/'); // Redirect to the default route
$location.replace(); // For better UX, remove this route from history
}
})
另请参阅此 short demo 。
或直接导航到此网址以进行实时演示:
的 http://fiddle.jshell.net/ExpertSystem/N8CgC/show#access_token=12345 强>