【问题标题】:why logoutController never calls? [duplicate]为什么 logoutController 从不调用? [复制]
【发布时间】:2019-11-22 02:57:08
【问题描述】:

单击注销按钮后,相关控制器不会调用,因此永远不会发生注销活动。

我已经使用 AngularJs 和 Spring boot 和 Security 编写了一个登录页面,在登录但注销时无法正常工作。

我刚刚粘贴了文件和页面的相关部分。

index.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("/");

        });    
    }
});

【问题讨论】:

    标签: angularjs spring-security


    【解决方案1】:

    去掉封闭函数,让路由器实例化控制器时立即执行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("/");
    
            });    
        ̶}̶
    });
    

    【讨论】:

    • 删除该行并没有帮助,因为它永远不会到达 logoutController ,这就是为什么我把 console.log 放在里面看它是否进入。
    • List All UsersRegister New Users 按钮是否有效?
    • 不,他们没有,因为我还没有写他们的控制器,我只有 homeController、loginController 和 logoutController,除了 logoutController...我给他们打电话了?
    猜你喜欢
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2021-03-24
    • 2021-06-21
    • 2021-02-18
    • 2014-01-14
    • 1970-01-01
    相关资源
    最近更新 更多