带有Angularjs注销错误的Spring Boot

Posted

技术标签:

【中文标题】带有Angularjs注销错误的Spring Boot【英文标题】:Spring Boot with Angularjs Logout Error 【发布时间】:2016-12-19 00:20:36 【问题描述】:

我正在编写描述如何使用 Spring Boot、Spring Security 和 AngularJS 编写模块化项目单页应用程序的教程

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】:

这是我们的项目代码。它对我们来说工作正常。试试这个。

安全配置:

@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',
    )
 ]);

【讨论】:

你好 naresh vadlakonda,谢谢你的回答,我尝试使用它,但不能解决我的问题。请问您是否尝试在我放在问题描述中的 github 代码链接中使用?谢谢 您好 Naresh,如果我需要在启用 CSRF 的情况下进行注销,我该怎么做?我收到 406 - 使用 post 方法时不支持 POST

以上是关于带有Angularjs注销错误的Spring Boot的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security OAuth2 AngularJS |注销流程

AngularJS和Spring MVC的Ajax GET错误

使用带有 Java 配置的 Spring Security 注销

带有 LDAP 注销的 Spring Security 无法删除会话

$http.POST 不适用于 DATETIME 数据类型(AngularJS、Spring 4.2、MySQL、Hibernate)

带有 spring-boot 和 angularjs 的 CORS 不起作用