spring-boot - 如何将 Spring Security 与 Spring Boot Rest API 一起使用?
问题描述
我制作了一个管理员工的网络应用程序。我想把它分成两部分,管理员和用户,并根据他们的角色进一步禁用用户界面中的一些功能。根据我的阅读,Spring Security 非常适合它,但我的问题是我的接口是一个项目,而 API 是一个单独的项目,所以我在项目中没有任何带有 jsp 文件的 daos 等。(我使用 AJAX 从数据库中获取必要的信息)
在这种情况下如何使用 Spring Security,有没有更好的方法呢?
解决方案
目前,您的前端(webapp 的用户界面)直接与数据库交互,自行执行 AuthN/AuthZ。因此,为了将 UI 与身份验证分离,您可以引入一个后端(即 springboot),该后端将依次处理与数据库的事务。考虑到使用简单用户密码的用例,不需要弹簧安全性,因为可以在代码本身中采用简单的决策逻辑。
- 数据库:您可以使用 springboot JPA的内存数据库,也可以坚持使用当前数据库,只要确保它具有 API,您的服务器可以通过这些 API 与之交互。
- 后端(Springboot):所以这可以有几个 REST API 端点,UI 可以使用这些端点来查询用户。
@RestController
public class CustomRestController() {
//Can be a post method, get is an exmaple.
@GetMapping("/authorize")
public boolean authorize(...) {
//Queries database and returns boolean based on match/unmatch.
}
@GetMapping("/user/details")
public UserDetails getUserDetailsForUserId(...) {
//UserDetails is a custom user object which you populate by querying
database.
//you can choose which details to send/not to send based on type of user.
}
}
- FrontEnd(Ajax):调用后端 rest api 端点。首先,它调用
/authorize
以确保客户端经过身份验证才能登录。成功后它会调用/user/details
. 现在基于后端过滤仅为管理员检索一些数据。由于缺少某些数据,因此根本需要显示(在普通用户的情况下)
参考:
推荐阅读
- javascript - 在 M1 MacBook Air 上运行 Sveltejs 模板时出现黑屏
- java - Java 默认接口方法到 kotlin 转换 - 不推荐使用 javadefault
- time-series - 使用 DeepAR GPU
- spring-boot - 如何将应用程序日志流式传输到云平台
- javascript - javascript中对象键值位置无序
- git - 如何在已删除的分支上重新提交旧提交?
- javascript - 设置 MUI ToggleButton 的选定背景颜色
- haskell - 如何在 CodeWorld 的 activityOf() 中构造状态?
- discord.js - 机器人如何为用户添加角色?(不和谐.js)
- python - 使用 Matplotlib 查询动画直方图