尝试通过spring security创建自己的访问处理逻辑。某些操作由自定义逻辑控制。所以:如果满足特定条件 - 我们允许用户做一些动作。如果不是 - 我们应该将命中重定向到登录页面,强制他重新登录然后继续操作。
这是我的自定义访问管理器:
@Component("accessManager")
public class AccessManager
{
public boolean hasAccess()
{
// Or true in some cases.
return false;
}
}
我的春季配置:
<!-- HTTP security configurations -->
<http auto-config="true" use-expressions="true">
<access-denied-handler error-page="/dataAccessFailure"/>
<form-login login-processing-url="/resources/j_spring_security_check" login-page="/login" />
<logout logout-url="/resources/j_spring_security_logout" />
<intercept-url pattern="/**" access="isAuthenticated() and @accessManager.hasAccess()" />
<csrf disabled="true"/>
</http>
现在它的工作方式如下:当我尝试访问*“/ **”*之类的请求而不进行身份验证时,它会将我重定向到登录页面。 然后我必须登录,之后我可以继续处理请求。 但是如果我的自定义hasAccess()中的条件不满足wethod,我只能看到dataAccessFailure页面。 主要问题是,只有在NO hasAccess()的情况下(不是每个AccessDeniedException),我才需要重新登录行为。在像
这样的情况下@PreAuthorize("hasAuthority('MyAuth')")
我必须看到dataAccessFailure页面。 谢谢。