angularjs - 为什么 logoutController 从不调用?
问题描述
单击注销按钮后,相关控制器不会调用,因此永远不会发生注销活动。
我已经使用 AngularJs 和 Spring boot 和 Security 编写了一个登录页面,在登录但注销时它工作正常但不工作。
我刚刚粘贴了文件和页面的相关部分。
索引.html
<nav class="navbar navbar-default">
<div class="container-fluid">
<div ng-show="authenticated">
<a href="#/"
class="btn btn-info navbar-btn"
role="button">
Home
</a>
<a href="#/register-new-user"
class="btn btn-info navbar-btn"
role="button">
Register New User
</a>
<a href="#/list-all-users"
class="btn btn-info"
role="button">
List All Users
</a>
**<a href="#/logout"
class="btn btn-danger navbar-btn pull-right"
role="button">Logout
</a>**
</div>
</div>
</nav>
app.js 路由写入的 URL
.when('/login',{
templateUrl : '/login/login.html',
controller : 'loginController'
})
**.when('/logout',{
templateUrl : '/login/login.html',
controller : 'logoutController'
})**
.otherwise({
redirectTo : '/login'
});
controller.js 将请求发布到 Spring Security。
app.controller('logoutController', function($rootScope, $scope, $http, $location, $route){
console.log("inside of logout controller...");
$scope.logout = function() {
$http.post('logout', {}).finally(function() {
$rootScope.authenticated = false;
$location.path("/");
});
}
});
解决方案
去掉封闭函数,这样当路由器实例化控制器时,POST请求立即执行:
app.controller('logoutController', function($rootScope, $scope, $http, $location, $route){
console.log("inside of logout controller...");
̶$̶s̶c̶o̶p̶e̶.̶l̶o̶g̶o̶u̶t̶ ̶=̶ ̶f̶u̶n̶c̶t̶i̶o̶n̶(̶)̶ ̶{̶
$http.post('logout', {}).finally(function() {
$rootScope.authenticated = false;
$location.path("/");
});
̶}̶
});
推荐阅读
- systemd - 如何让systemd等到进程启动
- php - 如何获取位置id中的最后一个元素
- php - 如何使用 ECB 密码模式和 PKCS7 块填充模式使用 Twofish 加密?
- drupal - 如果我在 Drupal 8 中有两种内容类型,它们之间存在关系,为什么我要在两种内容类型中都放置一个引用字段?
- ios - CollectionViewCell 效果
- mysql - mysql安全安装的厨师食谱
- javascript - div元素到coldfusion变量
- javascript - 'stopPropagation' 是否应该阻止画布接收 Fabricjs 对象上的鼠标事件?
- wordpress - 在登录和注销菜单之间切换
- nuget - 如何解决“无法找到包”nuget错误