Authentication 平均堆栈+;passport local:在单页应用程序上使用会话
我尝试实施本教程,介绍如何将身份验证过程添加到MEAN应用程序: 我试图实现的改变是将应用程序变成一个单页应用程序。。。所以我留下的唯一路线是登录的post路线。。。我正在解决登录问题,因为如果我能做到这一点。。。其余的都会随之而来 因此,我的应用程序由一个填充页面的谷歌地图和两个打开模式窗口的按钮(登录和注册)组成。。。里面有我的登录表。。。以下是模态窗口的角度控制器和jade模板的代码 控制器:Authentication 平均堆栈+;passport local:在单页应用程序上使用会话,authentication,meanjs,passport-local,Authentication,Meanjs,Passport Local,我尝试实施本教程,介绍如何将身份验证过程添加到MEAN应用程序: 我试图实现的改变是将应用程序变成一个单页应用程序。。。所以我留下的唯一路线是登录的post路线。。。我正在解决登录问题,因为如果我能做到这一点。。。其余的都会随之而来 因此,我的应用程序由一个填充页面的谷歌地图和两个打开模式窗口的按钮(登录和注册)组成。。。里面有我的登录表。。。以下是模态窗口的角度控制器和jade模板的代码 控制器: angular.module('myApp') .controller('ModalIns
angular.module('myApp')
.controller('ModalInstanceCtrl', ['$scope', '$modalInstance', 'settings', '$location', 'AuthService', function ($scope, $modalInstance, settings, $location, AuthService) {
$scope.settings = settings;
$scope.texts = {
login: {
title: "Login details",
button: "Login"
},
register: {
title: "Registration form",
button: "Register"
}
};
$scope.register = function () {
$modalInstance.close();
};
$scope.login = function () {
// initial values
$scope.error = false;
// call login from service
AuthService.login($scope.loginForm.username, $scope.loginForm.password)
// handle success
.then(function () {
console.log(AuthService.getUserStatus());
$modalInstance.close();
})
// handle error
.catch(function () {
$scope.error = true;
$scope.errorMessage = "Invalid username and/or password";
});
//$modalInstance.close();
};
$scope.cancel = function () {
$modalInstance.close();
};
}])
模式窗口的Jade模板:
div(class="modal-header")
h3(class="modal-title") {{texts[settings.action].title}}
div(class="modal-body")
div(ng-show="error", class="alert alert-danger")
form(class="form", ng-submit="login()")
div(class="form-group")
label Username
input(type="text", class="form-control", name="username", ng-model="loginForm.username")
div(class="form-group")
label Password
input(type="password", class="form-control", name="password", ng-model="loginForm.password")
div(class="modal-footer")
button(ng-show="settings.action=='login'", class="btn btn-primary", type="button", ng-click="login()") {{texts.login.button}}
button(ng-show="settings.action=='register'", class="btn btn-primary", type="button", ng-click="register()") {{texts.register.button}}
button(class="btn btn-warning", type="button", ng-click="cancel()") Cancel
所以我的pb是这样的:正确执行passport身份验证。。我收到登录成功消息。。。但在刷新时。。。如果我运行AuthService.isLoggedIn()。。我猜错了…
服务内容如下:
angular.module('myApp').factory('AuthService',
['$q', '$timeout', '$http',
function ($q, $timeout, $http) {
// create user variable
var user = null;
// return available functions for use in controllers
return ({
isLoggedIn: isLoggedIn,
getUserStatus: getUserStatus,
login: login,
logout: logout,
register: register
});
function isLoggedIn() {
if(user) {
return true;
} else {
return false;
}
}
function getUserStatus() {
return user;
}
function login(username, password) {
// create a new instance of deferred
var deferred = $q.defer();
// send a post request to the server
$http.post('/user/login', {username: username, password: password})
// handle success
.success(function (data, status) {
if(status === 200 && data.status){
user = true;
deferred.resolve();
} else {
user = false;
deferred.reject();
}
})
// handle error
.error(function (data) {
user = false;
deferred.reject();
});
// return promise object
return deferred.promise;
}
}]);
这是护照的邮寄路线
router.post('/login', function (req, res, next) {
passport.authenticate('local', function (err, user, info) {
if (err) {
return next(err)
}
if (!user) {
return res.status(401).json({err: info})
}
req.logIn(user, function (err) {
if (err) {
return res.status(500).json({err: 'Could not log in user'})
}
res.status(200).json({status: 'Login successful!'})
});
})(req, res, next);
});
你能把你的题目改一下吗?