【SpringSecurity系列(六)】自定义登录用户
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
《深入浅出Spring Security》一书已由清华大学出版社出版发行,该书是学习Spring Security的资源。作者提供了Spring Boot + Vue系列视频教程,以及一个微人事项目的权限数据库设计。
在Spring Security中,UserDetailsService接口负责封装不同数据源,可以使用系统默认的UserDetailsService实例,如InMemoryUserDetailsManager,或自定义实现。通过JdbcUserDetailsManager,可以将数据库通过JDBC与Spring Security连接起来。
Spring Security提供了一个默认的权限数据库模型,包含users和authorities两张表。这些表通过username字段关联,其中users表存储用户基本信息,authorities表存储用户角色。对于MySQL数据库,需要将数据类型从varchar_ignorecase更改为varchar。
在配置JdbcUserDetailsManager时,首先创建一个实例并添加DataSource对象。使用userExists方法检查用户是否存在,不存在则创建。这些方法最终执行预定义SQL脚本。
为了支持数据库,需要在项目中添加spring-boot-starter-jdbc和mysql-connector-java依赖,并配置数据库连接。配置完毕后,启动项目会自动添加用户和配置角色。
测试过程中,可以以不同用户身份登录并访问不同接口。根据用户的角色,访问会成功或失败。如果用户的enabled属性设置为false,表示禁用,用户将无法登录。
作者鼓励读者通过阅读和测试来学习,并提供了加入微信群的途径以交流Web安全。
想要了解更多内容?