【发布时间】:2019-01-07 21:20:22
【问题描述】:
用户未登录时如何响应http状态错误(例如403)?
AS IS:使用 spring 安全核心实现了用户身份验证。用户可以使用用户名和密码登录。当用户在认证之前尝试访问任何资源时,系统会重定向到登录页面并响应 200 OK HTTP 状态。
在 Grails 2.4.3 + SpringSecurityCore 2.0-RC4 上实现
将:200 OK 状态应更改为任何错误(如 403)
【问题讨论】:
-
为什么需要它?仅重定向到状态为 200 的登录页面有什么问题?顺便说一句:如果通过 AJAX 请求它只会返回 403(401?) 状态码。
-
@Koloritnij 感谢您的回复!有一个集成浏览器的应用程序。用户已在此应用程序中使用相同的凭据进行身份验证。我们需要避免用户在访问任何页面时输入凭据。集成浏览器可以处理响应,如果出现 403 错误,应用程序将在后台发送授权请求,例如 //server/login?login=user&pass=pwd。并且在此应用程序将再次发送原始请求之后。 (我知道,rest 身份验证将是这里最好的想法,但根据其他更改的复杂性,这个想法看起来更好)
-
不确定,但是尝试将这个添加到resources.groovy authenticationEntryPoint(classFor('authenticationEntryPoint', Http403ForbiddenEntryPoint))
-
@Koloritnij 非常感谢!你的建议有效。经过一些改进后,我得到了想要的行为。谢谢!