我有这段代码:
var app = angular.module('myApp', ['ionic']);
app.config(function($stateProvider) {
$stateProvider
.state('login', {
url: '/',
templateUrl: 'login.html',
controller: 'loginController'
})
.state('home', {
url: '/home',
templateUrl: 'home.html',
controller: 'homeController'
});
});
$urlRouterProvider.otherwise('/');
如何向状态提供程序添加条件以验证是否存在localstorage.token。如果是,请回家,然后登录
现在,我一直在登录状态和那里(loginController)我验证我是否在localstorage上有一个令牌。我对我的版本不满意......这就是为什么我要改进它
答案 0 :(得分:1)
我建议将home设置为默认路由,如果没有令牌,则执行重定向。所以这将是你的默认路线:
$urlRouterProvider.otherwise('/home');
如果没有令牌,你会重定向。您可以通过在运行块中查看$ locationChangeStart事件来实现此目的:
.run(function ($rootScope, $state) {
$rootScope.on('$locationChangeStart', function(event, next, current) {
// check for the user's token and that we aren't going to the login view
if(!localStorage.token && next.templateUrl != 'login.html'){
// go to the login view
$state.go('login');
}
}
})
如果用户未经过身份验证,则可以将用户限制在登录视图中。
答案 1 :(得分:0)
在app.run中你可以添加你的逻辑;这将在页面加载和刷新时触发。
.run(function ($state) {
if(localStorage.token) $state.go('home');
else $state.go('login');
})