我有一个使用AngularJS和ui-router开发的前端,需要消费后端REST API,因此需要获取OAuth2访问令牌(隐式授权)。我的问题在于OAuth流程的最后一步,当我从认证服务器中获取到访问令牌时,无法处理该URL。
mydomain.com/home/#access_token=hdzjkdnba89fenbjkéz38U0D903ç&...
mydomain.com/home
是显然的重定向URI。
重定向后不到一秒钟,AngularJS会将URL更改为类似于以下内容:
mydomain.com/#/my-default-view
因此,访问令牌从URL中删除。
现在有几件事情:
- 我不允许为我的OAuth2客户端定义包含哈希(“#”)的重定向URI。 因此,像
mydomain.com/#/auth-complete/
这样的东西不可行。 - 我使用
$routeProvider.otherwise('/')
。 - 我尝试设置
$locationProvider.html5Mode(true);
以删除中间的'#',但问题是相同的(重定向后立即清除URL和访问令牌)。 - 由于在Angular修改URL后,访问令牌仍然可以在HTTP响应中访问,因此我可能可以使用
$http
拦截器,但这听起来对于这个常见任务来说有些过分了,不是吗?
有什么建议吗?
ui-router
了。 - Buddyshot