【问题标题】:How to redirect unauthorized user to certain JSP page? (using declarative role based authorization)如何将未经授权的用户重定向到某个 JSP 页面? (使用声明性基于角色的授权)
【发布时间】:2014-02-03 08:40:08
【问题描述】:

[使用 JEE、MVC-JSP + Servlets、TomEE 服务器、MySQL]

我正在使用基于声明形式的身份验证、基于角色的授权。所以,基本上我的web.xml 有以下内容:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>secured</web-resource-name>
        <url-pattern>/somePage.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>ADMINISTRATOR</role-name>
    </auth-constraint>
</security-constraint>

<security-role>
    <role-name>ADMINISTRATOR</role-name>
</security-role>
<security-role>
    <role-name>USER</role-name>
</security-role>

<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/error.jsp</form-error-page>
    </form-login-config>
</login-config>

具有ADMINISTRATOR 角色的用户可以访问somePage.jsp。当具有USER 角色的用户尝试访问somePage.jsp 时,(通常)访问被拒绝,并在浏览器中返回页面HTTP Status 403 - Access to the requested resource has been denied

我希望当未经授权的用户尝试访问somePage.jsp 以重定向到另一个包含适当消息的 jsp 页面。如何才能做到这一点?或者,处理未经授权的用户访问尝试的做法是什么?

【问题讨论】:

    标签: java security jsp servlets model-view-controller


    【解决方案1】:

    您通常会在 web.xml 中创建自定义 403 错误页面和映射。您可以将其映射到您的 web.xml 中,类似于...

    <error-page>
        <!-- Forbidden directory listing -->
        <error-code>403</error-code>
        <location>/general-error.html</location>
    </error-page>
    

    /general-error.html 将是您的自定义 403 错误页面。我的理解是这些页面应该是相对通用的,因为当时所有的 webapp 都是错误代码,所以它们对所有用户应该是相同的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2018-08-30
      相关资源
      最近更新 更多