带Angularjs注销错误的Spring Boot

时间:2016-08-12 05:03:22

标签: angularjs spring spring-security spring-boot logout

我正在使用教程,该教程描述了如何使用Spring Boot,Spring Security和AngularJS编写模块化Project单页面应用程序

https://github.com/spring-guides/tut-spring-security-and-angular-js/tree/master/oauth2-vanilla

和这个项目

https://github.com/sharmaritesh/spring-angularjs-oauth2-sample

我无法注销当前登录的用户。 如果你点击"注销"在链接中,您将看到主页更改(不再显示问候语),因此用户不再使用UI服务器进行身份验证。点击返回"登录"虽然您实际上不需要返回授权服务器中的身份验证和批准周期(因为您尚未注销)。

我是Spring的新手,希望有些用户可以退出并再次返回登录页面。 请有人帮我或提出解决这个问题的建议吗?

1 个答案:

答案 0 :(得分:0)

这是我们的项目代码。对我们来说工作正常。尝试一次。

安全配置:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.httpBasic().and().authorizeRequests().antMatchers("/public/**")
                .permitAll().antMatchers("/admin/**").hasAuthority("admin")
                .antMatchers("/user/**").hasAuthority("user")
                .and()
                .logout()
                // Logout requires form submit. Bypassing the same.
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .logoutSuccessUrl("/index.html").and()
                .addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class)
                .csrf().disable();/*
                                 * requireCsrfProtectionMatcher(new
                                 * CsrfRequestMatcher())
                                 * .csrfTokenRepository(csrfTokenRepository());
                                 */

    }

angularjs:

$scope.logout = function() {
                $http.get('/logout').then(function() {

                    $location.url('/');
                })
            }

路由:

app.config([ '$routeProvider', function($routeProvider) {

    $routeProvider.when('/admin', {
        templateUrl : 'admin.html',

    }).when('/dashboard', {
        templateUrl : 'dashboard.html'
    }).when('/preferences', {
        templateUrl : 'preferences.html',
    }).otherwise('/', {
        templateUrl : 'index.html',
    })
} ]);