是的,你可以在ui路由器中使用解析。
比方說你有一個驗證服務(例如,我使用$ firebaseSimpleLogin)您可以在工廠定義。
.factory('Auth', function ($firebaseSimpleLogin, FIREBASE_URL, $rootScope, $firebase) {
var ref = new Firebase(FIREBASE_URL);
var auth = $firebaseSimpleLogin(ref);
var Auth = {
register: function (user) {
return auth.$createUser(user.email, user.password);
},
createProfile: function (user) {
var profile = {
username: user.username,
md5_hash: user.md5_hash
};
var profileRef = $firebase(ref.child('profile'));
return profileRef.$set(user.uid, profile);
},
login: function (user) {
return auth.$login('password', user);
},
logout: function() {
auth.$logout();
},
resolveUser: function() {
return auth.$getCurrentUser();
},
signedIn: function() {
return !!Auth.user.provider;
},
user: {}
};
$stateProvider
.state('TestPageCtrl', {
url: 'testpage',
templateUrl: 'test/testpage.html',
controller: 'AuthCtrl',
resolve: {
user: function(Auth) {
return Auth.resolveUser();
}
}
});
所以現在使用這個用戶可以控制用戶的訪問。
.controller('TestPageCtrl', function ($scope, $state, Auth, user) {
if (user) {
$state.go('posts');
} else {
// redirect to a page saying that login first.
}
});
哇真棒答案!我可以添加一個子問題嗎?我可以檢測我的用戶是否通過查找cookie來授權? – CodyBugstein 2014-12-05 09:47:50
我想你將不得不考慮基於cookie的認證。您將需要修改您的服務。檢查這個http://beletsky.net/2013/11/simple-authentication-in-angular-dot-js-app.html – 2014-12-05 09:57:17