我正在尝试使用angularjs实现登录身份验证。我想实现一个简单的登录服务。在我的Web应用程序中,客户端是AngularJS / Bootstrap,后端由Java和Spring技术组成。 这是它应该如何工作:
1.用户到达主页 2.用户进入登录页面登录(为简单起见,这里我们不关心用户的注册方式) 3.用户提交凭据以登录 3.A-如果登录成功=>重定向到profil页面并打印用户的用户名(这里是电子邮件) 3.B-如果登录失败=>重定向到主页
这是它的工作原理: 当用户提交凭据没有任何反应时,在Chrome控制台中我没有任何错误。 我不明白发生了什么。
所有代码使用都在plunker my code
中这是我的控制器和服务: UserController的 joblyApp.controller(“UserController”,函数($ rootScope,$ scope,$ location,$ window,UserService,AuthenticationService){ $ scope.isAuthenticated = function(){ 返回UserService.isLogged; };
$scope.logout = function(){
UserService.logout(user).success(function(data) {
$scope.data = data;
$location.path('/login');
})
};
//Submit credentials
$scope.submitCredentials = function(user) {
UserService.authenticate(user)
.success(function(data) {
$scope.data = data;
$location.path('/profil');
})
.error(function(data) {
$rootScope.error = "Failed to login";
$location.path('/');
});
};
});
UserProfilController
joblyApp.controller("UserProfilController", function($rootScope,$scope,$location,$window,AuthenticationService) {
$scope.user = {
username:AuthenticationService.email,
lastname:AuthenticationService.lastname
};
$scope.user = AuthenticationService.user;
});
UserService
joblyApp.factory('UserService', function($http,$location,$window,AuthenticationService) {
return {
logout : function(user) {
if(user.username==="test@test.com"){
user.userbame="";
user.firstname="";
AuthenticationService.email="";
AuthenticationService.firstname="";
AuthenticationService.isLogged=false;
return user;
}
},
authenticate : function(user){
if((user.email==="test@test.com")&&((user.password==="password"))){
AuthenticationService.email="test@test.com";
AuthenticationService.firstname="myself";
AuthenticationService.isLogged=true;
return user;
}
}
}
});
的AuthenticationService
joblyApp.factory('AuthenticationService', function() {
var auth = {
isLogged: false,
email:'',
lastname:'',
firstname:'',
role:''
}
return auth;
});
由于