Spring Boot 集成 Spring Security 入门案例教程
前言
本文作为入门级的DEMO,完全按照官网实例演示;
项目目录结构
Maven 依赖
<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>
前端页面 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>
前端页面 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>
前端页面 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>
启动程序 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安全配置 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"); } }
文末福利
Java 资料大全 链接:https://pan.baidu.com/s/1pUCC… 密码:b2xc
更多资料: 2020 年 精选阿里 Java、架构、微服务精选资料等,加 v :qwerdd111
本文由博客一文多发平台
OpenWrite 发布!
原文地址:https://segmentfault.com/a/1190000022449768
相关推荐
-
使用fetch发送post请求时的参数处理 Java基础
2020-5-29
-
Mybatis foreach标签使用不当导致异常的因探究 Java基础
2020-7-7
-
Java描述设计模式(18):享元模式 Java基础
2020-6-13
-
7个因告诉你为什么要选择ArangoDB “多模型” 数据库? Java基础
2020-5-30
-
Spring自定义注解+AOP实现权限控制 Java基础
2020-6-18
-
再谈spring的循环依赖是怎么造成的? Java基础
2019-6-8
-
【Java8新特性】不了解Optional类,简历上别说你懂Java8!! Java基础
2020-6-13
-
SpringMVC运行原理 Java基础
2019-9-15
-
分布式事务一致性实现的方式总结 Java基础
2019-8-20
-
一个案例彻底弄懂如何正确使用 mysql inndb 联合索引 Java基础
2018-12-3