转发路径
https://blog.kdyzm.cn/post/26
一、基于注解的授权使用
1、开启注解模式:@EnableGlobalMethodSecurity(securedEnable = true),可以放在springboot的启动类上,或者放在spring配置类;
2、在Controller里面的方法上加上需要的注解,比如@Secured({"ROLE_r1","ROLE_r2"}),表示访问该url需要r1或者r2的角色权限;
@PreAuthorize(hasAnyAuthority(‘auth1‘))注解,进入方法前的权限控制,具有auth1权限才能进入方法,适用于hasAnyAuthority、hasAuthority、hasRole、hasAnyRole;
@PostAuthorize()注解,用于方法执行之后的权限验证,适合带有返回值的方法的权限控制;
@PreFilter()注解,对方法参数进行过滤,@PostFilter()注解,对返回值进行过滤
返回值做了username过滤,非admin1的数据不会返回。
二、rememberme功能
1、关键配置
①
②
三、csrf 跨站请求伪造处理
1、是一种恶意跨站请求攻击。简单地说,就是攻击者通过一些手段,欺骗用户的浏览器去访问一个用户曾经认证过的网站并且做一些操作,比如发邮件、转账等。由于浏览器曾经认证过,所以被访问的网站就会以为是用户自己在真正操作。所以,简单的身份认证只能保证请求发自用户使用的浏览器,而无法保证是用户本人发出的。
SpringSecurity CSRF会针对POST、PUT、DELETE请求进行保护,GET请求不需要保护。
2、原理:
第一次认证时,生成token保存到session中,token也会返回给客户端,后续客户端的POST、PUT、DELETE涉及到增删改的请求都会携带token到服务器,服务端取出token进行匹配,从而实现保护目的。第三方网站无法获取token。
配置:
①表单中加入隐藏项:
<input type = “hidden” name = “${_csrf.parameterName}” value = “${_csrf.token}” />
②
http.csrf().disable(); 表示关闭保护功能。
原文:https://www.cnblogs.com/dust-to-dust/p/14781968.html