springboot连接数据库
Spring Security框架概述
Spring Security是一个用于解决应用安全问题的框架,它能够处理应用的认证和授权问题。在项目启动过程中,你会在日志中看到相关的启动信息。
启动项目
成功配置后,点击启动项目按钮,控制台将输出启动日志。Spring Security默认要求所有请求在未登录的情况下是不允许的。
密码加密与Bcrypt
Spring Security的依赖项中包括了Bcrypt算法的工具类。Bcrypt是一款优秀的密码加密工具,常用于存储密码时的加理。
实现查询功能
若要在当前模块(如`csmall-passport`)中实现查询功能,需要添加一系列相关依赖和配置信息,并创建相应的配置类和Mapper接口及XML文件。
用户认证与JWT
为实现通过数据库数据验证用户名与密码,而非默认的`user`用户名和随码,需在指定包下创建`UserDetailsServiceImpl`类,实现`UserDetailsService`接口,并重写其中的方法。完成后配置密码加密器,重启项目。在浏览器问项目的任何URL,进入登录页后,即可使用数据库中的管理员数据进行登录。
Token机制与JWT
Spring Security默认使用Session机制存储登录用户信息。当下更推荐使用Token或相关技术(如JWT)来解决用户身份识别问题。JWT是一种开放标准(JSON Web Tokens),用于在网络之间以JSON对象的形式安全地传输信息。
使用JWT的相关依赖与异常处理
要使用JWT,需要添加相关的依赖项。主流的JWT框架可以是`jjwt`。在使用JWT时,可能会遇到如`io.jsonwebtoken.ExpiredJwtException`、`io.jsonwebtoken.MalformedJwtException`和`io.jsonwebtoken.SignatureException`等异常情况。
自定义认证流程
在自定义认证流程中,需要自动装配`AuthenticationManager`对象,并使`SecurityConfiguration`配置类继承自`WebSecurityConfigurerAdapter`类,重写其中的方法,并添加`@Bean`注解。还需创建相应的DTO、Service和Controller类,以处理登录请求和后续的JWT生成与验证。
Spring Security配置与放行策略
在`SecurityConfiguration`中配置Spring Security,对特定的请求进行放行。未放行的请求将跳转到登录页。需在中添加相关的放行资源路径,以确保Knife4j的页面可以使用。
JWT验证过滤器
创建`JwtAuthenticationFilter`过滤器类,用于验证JWT。该过滤器应运行在Spring Security处理登录的过滤器之前,并在自定义的`SecurityConfiguration`中进行注册。此过滤器需从请求头中获取JWT数据,尝试解析并验证,将解析得到的数据封装到`Authentication`对象中,并存储在Spring Security的上下文中。
权限配置与注解
使用`@EnableGlobalMethodSecurity`注解开启“通过注解配置权限”的功能。在任何需要设置权限的处理请求的方法上,使用`@PreAuthorize`注解来配置权限要求。完成后,具有相应权限的用户可以访问受保护的资源,而没有权限的用户将无法访问。
总结