强制登录并继续请求AccessDeniedException spring

时间:2018-03-28 09:06:59

标签: java spring-security authorization access-denied

尝试通过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页面。 谢谢。

0 个答案:

没有答案
相关问题