java - 如何允许第一次未授权请求然后再请求授权?

标签 java spring request authorization endpoint

因此,我们正在实现这种特殊的授权,登录后,用户会看到基本的仪表板。当他尝试前往另一个位置时,系统会要求他使用密码进行授权。

问题是,为了呈现基本仪表板,发送了一些请求并需要附带 200 响应,而其余的仅返回错误消息并重定向到授权屏幕。

总而言之,我们将有 3 种端点:
- 阻止,直到用户授权
- 允许第一次返回正确的数据,而每个连续的请求都需要授权
- 无需授权

我找不到克服第二种类型的方法。有没有办法记录每个特定端点发送的请求数?或者有什么方法可以真正允许首先未经授权的使用,然后再要求授权?

最佳答案

一种方法是在用户第一次访问您的 Controller 时对没有任何角色的用户进行身份验证。

然后,当他再次尝试访问时,如果用户在没有角色的情况下登录,您可以将它们发送到登录过程。

要确保此方法的安全,可以使用以下注释:

@Secure("IsAuthenticated()==false || (IsAuthenticated() && hasRole("WRITE"))")

要手动确保安全,用户应使用 SecurityContextHolder

关于java - 如何允许第一次未授权请求然后再请求授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57269182/

相关文章:

java - Mongodb-java 如何将新对象插入到数组对象的起始索引中

java - 为什么Sybase JDBC驱动 "eating"异常?

java - 无法在 Eclipse 和 Tomcat 中创建断点

java - 具有规范、分页和标准获取连接的 Spring Data JPA 存储库

无法使用 lwIP 原始 TCP 连接接收对 HTTP 请求的多个响应

python-3.x - 如何向pytest的request.addfinalizer()中传递的函数添加参数?

php - Laravel 5 仅从请求中获取 GET 或 POST 参数

java - 将值从 Servlet 发送到 JSP,无需 cookie,并且 session 不会显示在 URL 上

java - Java 中的哈希

java - Spring Security 使用 RequestParam 时不断要求登录