java|java SpringSecurity使用详解
目录
- SpringSecurity
- 1、pom.xml
- 简介
- 1、pom.xml
- 2、Security的controller
- 3、路径转发的controller
- 注销及权限控制
- 1、导入依赖thymeleof整合security
- 2、html命名空间
- 3、根据用户的登录状态进行判断显示该有的信息
- 4、根据源码写表单name属性
- 5、实现有什么权限显示什么样的信息
- 6、注销logout-404
- 总结
SpringSecurity 【java|java SpringSecurity使用详解】shrio,SpringSecurity:认证,授权(VIP1,vip2…)
- 功能权限
- 访问权限
- 菜单权限
- 拦截器,过滤器:大量的原生代码,冗余
1、pom.xml
org.thymeleaf thymeleaf-spring5org.thymeleaf.extras thymeleaf-extras-java8time
简介
Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入Spring-boot-starter-security模块,进行少量的配置,即可实现强大的安全管理!
记住几个类:
- WebSecurityConfigurerAdapter: 自定义Security策略
- AuthenticationManagerBuilder:自定义认证策略
- @EnableWebSecurity: 开启WebSecurity模式 @Enablexxxx 开启某个功能
“认证”(Authentication)
“授权”(Authorization)
这个概念是通用的,而不是只在Spring Security中存在。
1、pom.xml
org.springframework.boot spring-boot-starter-security
2、Security的controller
package com.kuang.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; /*权限验证的配置类,要先继承WebSecurityConfigurerAdapter*/@Configurationpublic class SecurityConfigextends WebSecurityConfigurerAdapter {//定义访问规则:首页每个人都可以访问,但是功能也只有特定权限的人才能访问链式编程//授权@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/").permitAll().antMatchers("/level1/**").hasRole("vip1").antMatchers("/level2/**").hasRole("vip2").antMatchers("/level3/**").hasRole("vip3"); //没有权限默认跳转到登陆页面/loginhttp.formLogin(); }//认证/* 密码编码: BCryptPasswordEncoder()不编码会报下面的错误* java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"* */@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()).withUser("qin").password(new BCryptPasswordEncoder().encode("111")).roles("vip1","vip2","vip3").and().withUser("aaa").password(new BCryptPasswordEncoder().encode("111")).roles("vip1"); }}
3、路径转发的controller
package com.kuang.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @Controllerpublic class PathController {@GetMapping({"/","index"})//"/""index"都会去到index.htmlpublic String Toindex(){return "index"; }@GetMapping("/toLogin")public String Tologin(){return "views/login"; }@GetMapping("/level1/{id}")//@PathVariable获得url的占位符里面的值public String ToView(@PathVariable("id")int id){return "views/level1/"+id; }@GetMapping("/level2/{id}")public String ToView2(@PathVariable("id")int id){return "views/level2/"+id; }@GetMapping("/level3/{id}")public String ToView3(@PathVariable("id")int id){return "views/level3/"+id; }}
当然也可以在数据库中拿信息
文章图片
源码分析
没有权限的话会自动转发到/login
//没有权限默认跳转到登陆页面 /login
http.formLogin();
文章图片
//开启注销
http.logout();
文章图片
注销及权限控制
xmlns:sec=http://www.thymeleaf.org/extras/spring-security org.thymeleaf.extras thymeleaf-extras-springsecurity5
用spring-security实现用户登录后显示用户角色的信息
1、导入依赖thymeleof整合security
org.thymeleaf.extras thymeleaf-extras-springsecurity5
2、html命名空间
3、根据用户的登录状态进行判断显示该有的信息
文章图片
4、根据源码写表单name属性
文章图片
文章图片
5、实现有什么权限显示什么样的信息
文章图片
6、注销logout-404
文章图片
总结 本片文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 事件代理
- Java|Java OpenCV图像处理之SIFT角点检测详解
- java中如何实现重建二叉树
- iOS中的Block