我在 Spring 中开发了一个 RESTful API,它从数据库 (MongoDB) 中检索用户信息并将该数据返回给使用此 REST API 的客户端。但在检索数据之前,REST API 会检查用户是否为管理员。只有管理员可以执行 GET 操作来检索用户信息
所以在我的 securityconfig.java 类中我有这个:
http.authorizeRequests()
.antMatchers("/users/get/**", "/users/get/**").hasRole("ADMIN");
http.httpBasic();
现在,用户都有自己的角色,一切都按预期工作,因为当我打电话时curl adminusername:adminpassword@localhost:8080/users/get/AllUsers
我能够检索所有用户,因为用户名为 的用户adminusername
是管理员并且他具有权限。但是,如果我adminusername
用非管理员用户名替换,我会收到拒绝访问错误。
我的问题是,adminusername:adminpassword
@localhost:8080.... 之前的部分是 HTTP 请求的标头吗?
我问的原因是因为我需要创建一个能够登录的客户端,验证他的凭据(用户名和密码),并将用户名和密码用作会话 id,以便客户端在任何时候发出 HTTP 请求登录后调用,用户名和密码附加到头部并由 REST API 处理。
hasRole() 的
http.authorizeRequests()
.antMatchers("/users/get/**", "/users/get/**").hasRole("ADMIN");
在安全配置中依赖于username:password
@localhost:8080 之前的...。这与@RequestHeader
spring rest API 是一样的吗?