栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringSecurity总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringSecurity总结

SpringSecurity Spring Security简介

解决的两个核心问题:认证和授权
默认存在IOC AOP
基于配置(配置类中配置权限基本操作)

SpringSecurity自定义登录 1.API对象

UserDetailsService:loadUserByUserName
UserDetails(登录用户信息):用户名、密码、权限
PasswordEncoder:encode、matches

2.自定义登录前后端

后端:

1.实现UserDetailsService接口:需要自定义逻辑时,需要实现 UserDetailsService 接口
2.PasswordEncoder 密码解析器,其中BCryptPasswordEncoder 是 Spring Security 官方推荐的密码解析器
自定义表单配置。

自定义表单配置:

1.SecurityConfig 配置类 继承 WebSecurityConfigureAdaptor 重写configure(http)
2.configure 方法中加入自定义表单配置

其他配置

1.自定义登录表单参数:usernameParameters()、passwordParameter()【form表单name 与自定义表单参数名一致】
2.error.html

3.访问URL匹配

配置类中http.authorizeRequests() 主要是对url进行控制,也就是我们所说的授权(访问控制)。http.authorizeRequests() 也支持连缀写法

anyRequest():表示匹配所有的请求
antMatcher():参数是不定向参数,每个参数是一个 ant 表达式,用于匹配URL规则。
regexMatchers():使用正则表达式进行匹配。
mvcMatchers():适用于配置了 servletPath 的情况

4.内置访问控制方法

Spring Security 匹配了 URL 后调用了 permitAll() 表示不需要认证,随意访问。在 Spring
Security 中提供了多种内置控制。

.antMatchers("/yjxxt/demo").permitAll()

这里是引用permitAll()表示所匹配的 URL 任何人都允许访问。
authenticated()表示所匹配的 URL 都需要被认证才能访问。
anonymous()表示可以匿名访问匹配的URL。和permitAll()效果类似,只是设置为anonymous()的 url 会执行 filter 链中
denyAll()表示所匹配的 URL 都不允许被访问。
被“remember me”的用户允许访问
如果用户不是被 remember me 的,才可以访问

5.角色权限判断

其他的权限控制

.antMatchers("/main1.html").hasAuthority("admin")

hasAuthority(String)判断用户是否具有特定的权限
hasAnyAuthority(String …)如果用户具备给定权限中某一个,就允许访问。
hasRole(String)如果用户具备给定角色就允许访问。否则出现 403。
hasAnyRole(String …)如果用户具备给定角色的任意一个,就允许被访问
hasIpAddress(String)如果请求是指定的 IP 就运行访问。

6.403 没有权限处理(实现AccessDenyHandler 接口) 其他SpringSecurity知识 1.基于表达式的访问控制

access()方法使用:可以通过 access() 实现和之前学习的权限控制完成相同的功能。可以使用自定义方法。

2.基于注解的访问控制

在 Spring Security 中提供了一些访问控制的注解。这些注解都是默认是都不可用的,需要通过
@EnableGlobalMethodSecurity 进行开启后使用。

@Secured 是专门用于判断是否具有角色的。能写在方法或类上。参数要以 ROLE_开头。@PreAuthorize/@PostAuthorize:在执行前后判断权限 3.RememberMe功能实现

Spring Security 中 Remember Me 为“记住我”功能,用户只需要在登录时添加 rememberme复选框,取值为true。Spring Security 会自动把用户信息存储到数据源中,以后就可以不登录进行访问

4.Thymeleaf中SpringSecurity的使用(视图技术) 5.退出登录 6.SpringSecurity中的CSRF

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“oneClick Attack” 或者Session Riding。通过伪造用户请求访问受信任站点的非法请求访问。

从 Spring Security4开始CSRF防护默认开启。默认会拦截请求。进行CSRF处理。CSRF为了保
证不是其他第三方网站访问,要求访问时携带参数名为 _csrf 值为token(token 在服务端产生)
的内容,如果token和服务端的token匹配成功,则正常访问。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/771067.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号