我正在使用Angular-Meteor。
我有一个需要登录身份验证的页面。
例如:http://localhost:3000/verifyPhone
如果用户未登录并尝试访问该受限制的页面,我想将用户重定向到:http://localhost:3000/404。
这是我的路线档案:
app.config(function($stateProvider, $urlRouterProvider, $locationProvider) {
$urlRouterProvider.otherwise("/");
$stateProvider
.state('verifyPhone', {
url: "/verifyPhone",
templateUrl: "client/www/views/verifyPhone.html",
controller: "SMSVerificationController"
});
$locationProvider.html5Mode(true);
});
我如何在这里进行重定向?
答案 0 :(得分:1)
您可以使用resolve
对象将您的依赖关系声明为 requireUser()
:
app.config(function($stateProvider, $urlRouterProvider, $locationProvider) {
$urlRouterProvider.otherwise("/");
$stateProvider
.state('verifyPhone', {
url: "/verifyPhone",
templateUrl: "client/www/views/verifyPhone.html",
controller: "SMSVerificationController",
resolve: {
"currentUser": function ($meteor) {
return $meteor.requireUser();
}
}
});
$locationProvider.html5Mode(true);
});
之后,您需要捕获requireUser
承诺错误并将用户重定向到您的404页面:
app.run(function ($rootScope, $state) {
$rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, error) {
if (error === 'AUTH_REQUIRED') $state.go('404');
});
});