`

Hello Spring Security Java Config

 
阅读更多

Using Spring Security without using any XML

本文只做简单的翻译,想看原文请移步官网,有问题请留言。

 

1、配置环境

2、导入空项目

  • 导入项目(i.e. SPRING_SECURITY_HOME/samples/insecure)
  • 右键点击项目,Run As→Run on Server

3、Securing the application

  • add maven dependency
    pom.xml
<dependencies>
  <!-- ... other dependency elements ... -->
  <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>4.0.1.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>4.0.1.RELEASE</version>
  </dependency>
</dependencies>
  •  Maven→Update project…​
  • 创建包org.springframework.security.samples.config,包下创建类SecurityConfig.java,like this

    src/main/java/org/springframework/security/samples/config/SecurityConfig.java 

package org.springframework.security.samples.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.configuration.*;

@EnableWebSecurity
public class SecurityConfig {

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
            .inMemoryAuthentication()
                .withUser("user").password("password").roles("USER");
    }
}

 

官网写道
The name of the configureGlobal method is not important. However, it is important to only configure AuthenticationManagerBuilder in a class annotated with either @EnableWebSecurity, @EnableGlobalMethodSecurity, or @EnableGlobalAuthentication. Doing otherwise has unpredictable results.
大致的意思是:configureGlobal方法名不重要,重要的是需要在有@EnableWebSecurity、 @EnableGlobalMethodSecurity、@EnableGlobalAuthentication等注解的类下配置 AuthenticationManagerBuilder,否则导致不可预知的结果。

 

SecurityConfig 的作用:

 4、注册springSecurityFilterChain

  • org.springframework.security.samples.config里再创建一个类SecurityWebApplicationInitializer.java

    src/main/java/org/springframework/security/samples/config/SecurityWebApplicationInitializer.java

package org.springframework.security.samples.config;

import org.springframework.security.web.context.*;

public class SecurityWebApplicationInitializer
      extends AbstractSecurityWebApplicationInitializer {

    public SecurityWebApplicationInitializer() {
        super(SecurityConfig.class);
    }
}

 

 SecurityWebApplicationInitializer主要做下面几个事情:

  • Automatically register the springSecurityFilterChain Filter for every URL in your application(自动为每个url注册一个springSecurityFilterChain Filte)

  • Add a ContextLoaderListener that loads the SecurityConfig.(增加一个context监听器去加载SecurityConfig

 5、部署项目,并尝试登陆

  • 启动server后,会看到一个登录页面,使用user和password进行登录。
  • 在页面上增加登陆后的用户名信息

    src/main/webapp/index.jsp

<body>
  <div class="container">
    <h1>This is secured!</h1>
    <p>
      Hello <b><c:out value="${pageContext.request.remoteUser}"/></b>
    </p>
  </div>
</body>

 

 6、退出登陆

    src/main/webapp/index.jsp

<body>
  <div class="container">
    <h1>This is secured!</h1>
    <p>
      Hello <b><c:out value="${pageContext.request.remoteUser}"/></b>
    </p>
    <c:url var="logoutUrl" value="/logout"/>
    <form class="form-inline" action="${logoutUrl}" method="post">
      <input type="submit" value="Log out" />
      <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
    </form>
  </div>
</body>

 

In order to help protect against CSRF attacks, by default, Spring Security Java Configuration log out requires:

  • the HTTP method must be a POST

  • the CSRF token must be added to the request You can access it on the ServletRequest using the attribute _csrf as illustrated above.

分享到:
评论

相关推荐

    SpringSecurity入门小demo(SSM+Spring Security)

    在 `HelloSpringSecurity` 文件中,你可能看到以下关键代码: - **WebSecurityConfigurerAdapter** 类:这是 Spring Security 提供的配置适配器,可以覆盖其方法来定制安全规则。 - `configure(HttpSecurity http)...

    SpringSecurity_day03.pdf

    public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // 自定义配置 http.authorizeRequests() .antMatchers("/...

    spring security4登陆例子

    为了使Spring Security配置生效,我们需要通过`SecurityWebApplicationInitializer`类来注册我们的`SecurityConfig`配置类。 ```java package core.security; import org.springframework.security.web.context....

    Spring security 官网说明文档(英文版)

    - **Config (spring-security-config.jar)**: 支持 XML 和 Java 配置的安全模型。 - **LDAP (spring-security-ldap.jar)**: 支持 LDAP 认证和授权。 - **ACL (spring-security-acl.jar)**: 提供基于 ACL 的访问控制...

    Spring-Security-3-HelloWorld 实例简单代码

    public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/").permitAll() ...

    spring security (-) helloWorld

    public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/").permitAll() ...

    spring security 参考手册中文版

    配置 - spring-security-config.jar 26 LDAP - spring-security-ldap.jar 26 ACL - spring-security-acl.jar 26 CAS - spring-security-cas.jar 26 OpenID - spring-security-openid.jar 26 测试 - spring-security-...

    spring-security-reference-4.1.1.RELEASE

    - Config (`spring-security-config.jar`):提供配置相关的功能。 - LDAP (`spring-security-ldap.jar`):提供 LDAP 集成支持。 - ACL (`spring-security-acl.jar`):提供基于权限的访问控制功能。 - CAS (`...

    SpringSecurity_03 整合SpringBoot1

    SpringSecurity 是一个强大的安全框架,用于为 Java 应用程序提供身份验证和授权服务。它与 Spring Boot 结合使用,可以简化安全配置,使开发者能够快速构建安全的应用。在这个场景中,我们讨论的是如何将 Spring...

    Spring Security3技术手册

    ### Spring Security3技术手册知识点概览 #### 一、基础篇 **1. 一个简单的Hello World** - **1.1 配置过滤器** - Spring Security通过一系列的过滤器来实现对Web应用程序的安全控制。了解如何配置这些过滤器是...

    spring-security-reference-4.0.1

    - **Config (spring-security-config.jar)**:用于定义安全配置。 - **LDAP (spring-security-ldap.jar)**:提供 LDAP 认证和授权支持。 - **ACL (spring-security-acl.jar)**:提供了基于访问控制列表 (ACL) 的权限...

    浅谈spring security入门

    spring-security-config模块提供了XML或Java注解配置支持。 依赖配置 要使用Spring Security,需要在pom.xml文件中添加依赖项,例如:&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;...

    手把手带你入门 Spring Security的具体流程

    public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { //下面这两行配置表示在内存中配置了两个...

    spring-boot示例项目

    jGit|[java调用git命令、jgit使用等](https://github.com/smltq/spring-boot-demo/blob/master/jGit) webmagic|[webmagic实现某电影网站爬虫示例](https://github.com/smltq/spring-boot-demo/blob/master/webmagic...

    最简单的SS模型,一个SS的Hello World

    在"最简单的SS模型,一个SS的Hello World"中,我们将会探讨如何将Spring Security集成到Spring应用中,实现一个基础的安全配置。 首先,我们需要在项目中引入Spring Security的依赖。如果使用的是Maven,可以在pom....

    spring-websocket-test-master.zip

    Spring框架作为Java领域中极为重要的轻量级开发框架,自然也提供了对WebSocket的支持。本文将深入探讨如何在Spring环境中集成WebSocket,实现高效、稳定的实时通讯。 一、WebSocket基础 WebSocket是一种在单个TCP...

    Spring-websocket不使用springmvc环境进行开发

    在IT行业中,Spring框架是Java领域最常用的轻量级开源框架之一,而Spring WebSocket则是在Spring框架中用于实现WebSocket通信的模块。WebSocket是一种在客户端和服务器之间建立长连接的协议,它提供了双向通信的能力...

    security4登陆例子.

    super(SecurityConfig.class); } } ``` ##### 3. 用户服务类 `SecurityUserService` 用户服务类实现了 `UserDetailsService` 接口,主要职责是从数据库中获取用户信息。 ```java public class ...

Global site tag (gtag.js) - Google Analytics