Spring Boot integrated Spring Security entry case tutorial

Foreword

This article, as an entry-level DEMO, is fully demonstrated according to the examples on the official website;

Project directory structure

Structure diagram

Maven dependency


  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
  </dependencies>

Front page home.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Spring Security Example</title>
</head>
<body>
  <h1>Welcome!</h1>
  <p>Click <a th:href="@{/hello}">here</a> to see a greeting.</p>
</body>
</html>

Home

Front page login.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Spring Security Example </title>
</head>
<body>
<div th:if="${param.error}">    Invalid username and password.</div>
<div th:if="${param.logout}">    You have been logged out.</div>
<form th:action="@{/login}" method="post">    
    <div><label> UserName: <input type="text" name="username"/> </label></div>
    <div><label> Password: <input type="password" name="password"/> </label></div>
    <div><input type="submit" value="Sign In"/></div>
</form>
</body>
</html>

log in

Front page hello.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hello World!</title>
</head>
<body>
<h1 th:inline="text">Hello [[${#httpServletRequest.remoteUser}]]!</h1>
<form th:action="@{/logout}" method="post">
    <input type="submit" value="Sign Out"/>
</form>
</body>
</html>

welcome

Start the application Application.java

@SpringBootApplication
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

HomeController.java

@Controller
public class HomeController {
  @RequestMapping("/")
  public String home(){
    return "home";  
  }

  @RequestMapping("/login")
  public String login(){
    return "login";
  }

  @RequestMapping("/hello")
  public String hello(){
    return "hello";
  }
}

Web Security Configuration WebSecurityConfig.java

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http
      .authorizeRequests()
        .antMatchers("/").permitAll()                      //请求路径"/"允许访问
        .anyRequest().authenticated()                      //其它请求都需要校验才能访问
      .and()
        .formLogin()
          .loginPage("/login")                             //定义登录的页面"/login",允许访问
          .permitAll()
      .and()
        .logout()                                           //默认的"/logout", 允许访问
          .permitAll();
  }
  @Autowired
  public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    //在内存中注入一个用户名为anyCode密码为password并且身份为USER的对象
    auth
      .inMemoryAuthentication()
        .withUser("anyCode").password("password").roles("USER");
  }
}

End of sentence

Links to Java resources: https://pan.baidu.com/s/1pUCCPstPnlGDCljtBVUsXQ Password: b2xc
More information: Selected Alibaba Java, architecture, microservices, etc. in 2020, plus v ❤: qwerdd111

Reprinted, please keep the original address, thank you ~

Guess you like

Origin www.cnblogs.com/Alandre/p/12741905.html