我想通过基于URL中有用户会话或令牌的自定义身份验证逻辑来限制某些路由的访问。
为此,我想在angularjs应用程序模块的config方法中获取会话或令牌。并测试要加载的状态:
angular.module('myModyle')
.run(config);
function config($stateProvider, authService) {
var token = $stateParams.token;
if (token) {
getStatesWithoutAccount();
} else {
authService.getSession()
.then(function (sessionUser) {
if (sessionUser) {
getStatesWithAccount();
} else {
// redirect to authentication form
}
}
);
}
};
...
function getStatesWithAccount() {
$stateProvider
.state('PageWithAccount', {
url: '/withAccount',
templateUrl: 'myTemplate.html',
controller: 'myController'
...
}
...
function getStatesWithoutAccount() {
$stateProvider
.state('PageWithoutAccount', {
url: '/withoutAccount',
templateUrl: 'myTemplate1.html',
controller: 'myController1'
...
}
但是这种方法行不通,因为我无法在配置级别注入 authService (我只能在该级别注入提供程序),任何提示或解决此问题的想法?