你还不了解SpringSecurity吗?快来看看SpringSecurity实战总结~
org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter
org.springframework.security.web.context.SecurityContextPersistenceFilter
org.springframework.security.web.header.HeaderWriterFilter
org.springframework.security.web.csrf.CsrfFilter
org.springframework.security.web.authentication.logout.LogoutFilter
org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter
org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter
org.springframework.security.web.savedrequest.RequestCacheAwareFilter
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter
org.springframework.security.web.authentication.AnonymousAuthenticationFilter
org.springframework.security.web.session.SessionManagementFilter
org.springframework.security.web.access.ExceptionTranslationFilter
org.springframework.security.web.access.intercept.FilterSecurityInterceptor
1 @Configuration //告诉SpringBoot该类是一个配置类,自动装配到IOC容器
2 @EnableWebSecurity //全局开启SpringSecurity
3 @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) //开启权限注解,之后会介绍
4 public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
5 @Override
6 protected void configure(HttpSecurity http) throws Exception {
7 //添加自定义过滤器在某过滤器前执行
8 http.addFilterBefore(wrapperFilter, UsernamePasswordAuthenticationFilter.class);
9 //添加自定义过滤器在某过滤器之后
10 http.addFilterAfter(filter,UsernamePasswordAuthenticationFilter.class);
11 //添加过滤器在最后
12 http.addFilter(filter);
13 }
14 }
1 .rememberMe()
2 .tokenRepository(tokenRepository) //记住我的token管理Dao,操作数据库的记住我缓存
3 .tokenValiditySeconds(60) //token的有效时长
1 .formLogin()
2 .loginPage("/login_page") //登陆页面
3 .loginProcessingUrl("/login") //登陆请求处理接口,Spring security默认的处理登录接口是/login这个自带的接口
4 .usernameParameter("name") //指定用户名参数名称
5 .passwordParameter("passwd") //指定密码参数名称
6 .permitAll() //将登录操作url放行
.authorzeRequests()
.antMatchers("/admin/**")
.hasRole("ADMIN") //具备特定角色可访问 .antMatchers("/user/**")
.access("hasAnyRole('ADMIN','USER')") //参数以表达式方式书写,多个以 and 连接 //除了.permitAll()的url,其余所有URL需要认证后访问
.anyRequest()
.authenticated()
logout(登出):
1 .logout() //开启注销登陆
2 .logoutUrl("/logout") //注销登陆请求url
3 .clearAuthentication(true) //清除身份信息
4 .invalidateHttpSession(true) //session失效
5 .addLogoutHandler(new LogoutHandler() { //注销处理
6 @Override
7 public void logout(HttpServletRequest req,
8 HttpServletResponse resp,
9 Authentication auth) {
10
11 }
12 })
13 .logoutSuccessHandler(new LogoutSuccessHandler() { //注销成功处理
14 @Override
15 public void onLogoutSuccess(HttpServletRequest req,
16 HttpServletResponse resp,
17 Authentication auth)
18 throws IOException {
19 resp.sendRedirect("/login_page"); //跳转到自定义登陆页面
20 }
21 })
1 .csrf().disabl(); //前后端分离时一般关闭
- 认证用户实现UserDetails接口
- 用户来源的Service实现UserDetailsService接口,实现loadUserByUsername()方法,从数据库中获取数据
- 实现自己的过滤器继承UsernamePasswordAuthenticationFilter,重写attemptAuthentication()和successfulAuthentication()方法实现自己的逻辑
- Spring Security的配置类继承自WebSecurityConfigurerAdapter,重写里面的两个config()方法
- 如果使用RSA非对称加密,就准备好RSA的配置类,然后在启动类中加入注解将其加入IOC容器
- securedEnable=true 开启@Securd注解
- prePostEnable=true 开启@Preauthorize@PostAuthorize注解
1 @Service
2 public class MethodService {
3 @Secured("ROLE_ADMIN") //访问此方法需要ADMIN角色
4 public String admin() {
5 return "hello admin";
6 }
7 @PreAuthorize("hasRole('ADMIN') and hasRole('DBA')") //访问此方法需要ADMIN且DBA
8 public String dba() {
9 return "hello dba";
10 }
11 @PreAuthorize("hasAnyRole('ADMIN','DBA','USER')") //三个都行
12 public String user() {
13 return "user";
14 }
15 }
你还不了解SpringSecurity吗?快来看看SpringSecurity实战总结~的更多相关文章
- 【SpringSecurity系列2】基于SpringSecurity实现前后端分离无状态Rest API的权限控制原理分析
源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...
- 面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1.什么是 Redis?. 2.Redis 的数据类型? 3.使用 Redis 有哪些好处? 4.Redis 相比 Memcached 有哪些优势? 5.Memcache 与 Re ...
- 【转】面试还搞不懂redis,快看看这40道Redis面试题(含答案和思维导图)
———————————————— 版权声明:本文为CSDN博主「程序员追风」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog. ...
- 金融数据分析还能这样做?快试试这个BI工具小白也能学会!
说起银行.保险.股票投资等这些金融行业,大多数人都认为它们都是依靠数据驱动的企业,毕竟大数据的诞生本来就是为了金融信息流通而服务的,但是事实真的是这样吗? 事实并非如此,真正在金融行业做数据分析的人, ...
- 2020面试还搞不懂MyBatis?快看看这27道面试题!(含答案和思维导图)
前言 MyBatis是一个优秀的持久层ORM框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建statem ...
- Docker竟然还能这么玩?商业级4G代理搭建实战!
时间过得真快,距离这个系列的上一篇文章<商业级4G代理搭建指南[准备篇]>发布的时间已经过了两个星期了,上个星期由于各种琐事缠身,周二开始就没空写文章了,所以就咕咕咕了. 那么在准备篇中, ...
- 轻松上手SpringBoot+SpringSecurity+JWT实RESTfulAPI权限控制实战
前言 我们知道在项目开发中,后台开发权限认证是非常重要的,springboot 中常用熟悉的权限认证框架有,shiro,还有就是springboot 全家桶的 security当然他们各有各的好处,但 ...
- 【SpringSecurity系列1】基于SpringSecurity实现前后端分离无状态Rest API的权限控制
源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...
- CyberArticle(eLib电子图书馆)网文快捕
CyberArticle (网文快捕)是一款知识管理软件,主要致力于网页的保存和后期管理.CyberArticle (网文快捕)主要功能,就是收集和整理网页.利用CyberArticle (网文快捕) ...
随机推荐
- java中super的几种用法,与this的区别
1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位. class Base { Base() { System.out.println("Base"); ...
- NSURLConnection和Runloop
- 1.1 涉及知识点(1)两种为NSURLConnection设置代理方式的区别 //第一种设置方式: //通过该方法设置代理,会自动的发送请求 // [[NSURLConnection alloc ...
- 使用Lock接口来解决线程安全的问题
package cn.itcast.demo16.Demo09.Lock;import java.util.concurrent.locks.Lock;import java.util.concurr ...
- 使用JSP实现输出
一.在JSP页面添加java代码,实现输出,java代码写在<% %>中. 代码示例1: <body> <!-- HTML注释 --> <%-- JSP注释 ...
- 【力扣】337. 打家劫舍 III
在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区.这个地区只有一个入口,我们称之为"根". 除了"根"之外,每栋房子有且只有一个" ...
- how2heap libc2.31学习
今天是四月十九,想在五月份之前把how2heap中的高版本(2.31)的例子过一遍.所以这个系列目前还是在更新中.如果比较简单就几句话带过了,遇到难一点的会写的详细一点. fastbin_dup 源代 ...
- CTFHub[PWN技能树]——栈溢出
文章目录 一.ret2text 二.ret2shellcode 一.ret2text 例行检查,64位程序,没有开启任何保护 本地运行一下情况,看看大概的情况 64位ida载入,检索程序里的字符串发现 ...
- 联盛德 HLK-W806 (九): 软件SPI和硬件SPI驱动ST7789V液晶LCD
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- Table.FirstN保留前面N….First…(Power Query 之 M 语言)
数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...
- 调配资源(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 当资源过度分配了,肿么办? 比如前面的例子,某吃货甲,一天之内给他分配了9.6个工时的吃量,这怎么可以呢,让人加班是不厚道 ...