目前我正在用Java开发一个基于SpringBoot的web应用程序,下面这篇文章主要给大家介绍了关于Spring Security如何为用户示例添加角色的相关资料,需要的朋友可以参考下
前言
在这个 Spring Security 教程中,我很乐意与您分享如何通过在 Java Web 应用程序中为用户添加角色来实现授权——从数据库设计到实体类;从单元测试到在用户注册中添加默认角色;以 Web 形式更新用户的角色。
技术:Spring Web MVC、Spring Data JPA、Hibernate 框架、Spring Security、Spring Boot Test、JUnit 5、AssertJ、Thymeleaf 和 MySQL 数据库。
基本上,我们需要在数据库中有 3 个表,如下所示:
一个用户可以有一个或多个角色,一个角色可以分配给一个或多个用户,因此用户和角色表之间的实体关系是多对多的。users_roles是实现这种关系的中间表。
1. 用户和角色实体类和存储库的代码
将User 实体类编码如下:
并像这样对Role 实体类进行编码:
如您所见,User类有一组角色,但Role类没有任何对 User 的引用。默认情况下, @ManyToMany关系上没有级联操作——这意味着更新User对象不会更改关联的Role对象。
2. 单元测试——创建角色
接下来,让我们编写以下测试类,用于将一些Role对象持久化到数据库中:
运行testCreateRoles()方法,我们最终将根据 3 个角色将 3 个新行插入到角色表中:用户、管理员和客户。
3. 单元测试——给用户添加角色
要测试向用户添加角色,请使用以下初始代码创建UserRepositoryTests类:
以下是第一个测试方法的代码片段,它保留了一个没有任何角色的用户对象:
以下测试方法创建一个具有管理员角色的新用户:
以下测试将通过添加两个角色 User 和 Customer 来更新现有用户:
运行这些测试方法,您将看到插入到users和users_roles表中的行。角色表不受影响。
4. 为注册用户设置默认角色
用户注册中的一个常见场景是为新注册的用户设置默认角色,例如用户或客户角色。以下是服务层的示例代码片段:
以及控制器层的代码:
如您所见,这非常简单——感谢 Spring Data JPA 和 Hibernate 框架,极大地简化了数据访问层的编码。
5. 在 Web 表单中为用户分配角色
现在,我将向您展示如何使用 Web 用户界面编写编辑用户功能的代码,我们可以在其中更改分配给用户的角色。
首先,在UserService 类中实现如下方法:
在控制器类中:
此处理程序方法将显示从数据库中检索到的用户列表。并将以下相关代码放入视图页面(HTML):
它将在 URL http://localhost.../users 处显示用户列表,如下所示:
在此用户列表页面上,我们可以单击编辑超链接来编辑用户。所以像这样编写处理程序方法:
并在服务类中实现以下两个方法:
在视图层,为编辑用户表单编写如下代码:
此页面中最重要的是显示角色列表并检查分配给当前用户的角色的代码:
然后编辑用户表单将如下所示:
这里很酷的是,Thymeleaf 会根据分配给用户的角色自动显示选择的角色。此外,您可以在此处简单地选中/取消选中角色来更新用户的角色。
并编写处理表单提交的处理程序方法,如下所示:
以及服务层的相关代码:
这是一些关于在 Spring Boot Web 应用程序中向用户添加角色的代码示例。我希望您发现这个书面教程对您有所帮助。
总结
到此这篇关于Spring Security如何为用户示例添加角色的文章就介绍到这了,更多相关Spring Security用户示例添加角色内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!