Spring Security是一个功能强大的身份验证和授权框架,旨在保护Java应用程序免受常见的安全威胁。它基于Spring框架,提供了一套易于使用且高度可定制的安全特性。
Spring Security提供了以下主要功能:
-
身份验证(Authentication):Spring Security支持多种身份验证方式,包括基于表单、HTTP基本认证、LDAP、OpenID等。它还提供了灵活的用户认证管理机制,可以集成自定义的用户认证服务。
-
授权(Authorization):Spring Security支持基于角色和权限的访问控制。开发人员可以定义安全规则,限制用户对受保护资源的访问。通过注解、表达式或配置文件,可以精确控制用户访问各个部分的权限。
-
攻击防范(Attack Protection):Spring Security提供了一系列的攻击防范机制,包括跨站点脚本攻击(XSS)、跨站请求伪造(CSRF)、点击劫持(Clickjacking)等。它通过自动应用适当的安全措施来帮助开发人员应对这些常见的安全威胁。
-
会话管理(Session Management):Spring Security允许开发人员对会话进行管理,包括并发会话控制、会话过期处理、会话固定保护等。这有助于提供更安全和可靠的用户体验。
-
安全事件与日志(Security Events and Logging):Spring Security提供了详细的安全事件和日志记录,帮助开发人员监控应用程序中的安全事件。这些事件包括登录成功、访问被拒绝、认证失败等,可用于追踪和调试安全问题。
1.先导入依赖
<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
2.
@EnableWebSecurity是一个基于web开发的安全注解,因为我们是web开发,需要在配置类上添加这个注解,并且继承WebSecurityConfigurerAdapter。
3.
重写configure方法,这个方法是会涉及到重载,有很多方法名相同的,我们需要重写参数为http的方法。
4.
然后下面是认证请求,基于链式编程。
这个的意思是请求的url,我们没有填,所以是主页。
http.permitAll():主页所有人可访问。
5.
根据角色进行认证授权, level1下的所有页面,只有“vip1”这个角色可以访问。
6.
如果当前登录人没有权限,直接跳转到登录页面,只需要一句话。
7.
有登录当然也要有退出,也是一句话,点击就会跳到注销页面。
8.
权限控制
上面的意思是,“lllllc”这个用户(正常需要连接jdbc,在数据库中获取),可以访问vip1和vip3页面,需要设置密码加密,否则页面会错。
root用户可以访问所有页面。
有权限可以访问。
没有权限会报错403,也就是权限问题。以上就是spring security的简单使用。