logout()不能使用passport.js,express.js,AngularJs

猜猜我没有足够的睡眠,无法弄清楚。 遵循weblogin在线样本,loginbutton的作品,而不是注销button,注销不在server.js调用。

非常感谢 !

app.config(['$routeProvider', function($routeProvider) { $routeProvider.when('/login', { templateUrl: '/partials/login.html', controller: 'authController' }); $routeProvider.when('/logout', { templateUrl: '/partials/logout.html', controller: 'authController', }); ... ); app.controller('authController', function($scope, $http, $location, $window) { $scope.user = {username:'', password:''}; $scope.alert = ''; $scope.login = function(user) { $http.post('/auth/login', user). success(function(data) { console.log("you are at /auth/login 0"); $scope.loggedUser = data; $window.location.href = "/index.html#/systemStatus"; }). error(function() { console.log("you are at /auth/login 1"); $scope.alert = 'Login failed' }); }; $scope.logout = function() { $http.get('/auth/logout'). success(function() { console.log("you are at /auth/logout 0"); $scope.loggedUser = {}; }). error(function() { console.log("you are at /auth/logout 1"); $scope.alert = 'Logout failed' }); }; }); 

login.html(这是默认页面,总是需要先login)

 <div ng-controller="authController"> <div style="margin-top:10px" class="form-group"> <div class="col-sm-12 controls"> <a id="btn-login" class="btn btn-success" ng-click="login(user)">Login </a> </div> </div> </div> 

main.html(这是成功login后的第一页)

 <html ng-app="myModule" ng-controller="MainCtrl"> ... <div class="container" ng-controller="authController"> <a class="btn btn-md btn-info custom-btn" ng-href="#/logout">Logout</a> </div> ... </html> 

server.js

 app.get('/auth/logout', function(req, res) { console.log("logging out ......"); req.session.distory(); req.logout(); //res.redirect('/login.html'); res.send(200); }); 

问题是angular路由发生而不是快速路由。 为了快速路由请求,您需要在注销链接的锚标签中添加target =“_ self”。

 <a class="btn btn-md btn-info custom-btn" ng-href="#/logout" target="_self">Logout</a> 

你拼写错误:

 req.session.destroy(); 

 req.session.distory(); 

使用

  req.logout(); req.session.destroy(); res.redirect("/login"); 

我在我的nodejs应用程序中使用它,它的工作正常。

您需要通知浏览器刷新login信息。 这可以通过发送401错误代码来完成。

 app.get('/auth/logout', function(req, res) { console.log("logging out ......"); req.logout(); res.send(401); });