哈希从AngularJS中的默认路由中删除

时间:2014-07-01 13:20:50

标签: angularjs angularjs-routing

我正在编写一个角度应用程序,我需要接受带有片段哈希的URL(OAuth 2.0)。缩短它看起来像这样。

http://example.com/#access_token=918f4d6e90b25b13ef66a

加载此URI时,路由进程无法识别路径,并且正确地将应用程序重定向到默认路由。问题是,这样我松开了哈希,我再也无法解析它了。

我想要做的是在删除之前解析哈希。 您对可能的解决方案有任何想法吗?

感谢。

P.S。在这个应用程序中我不能使用HTML5模式。启用它可以正常工作。

1 个答案:

答案 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