java - 如何将未经授权的用户重定向到某个JSP页面? (使用基于声明性角色的授权)

标签 java security jsp servlets model-view-controller

[使用 JEE、MVC-JSP + Servlet、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 resources has beenied

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

最佳答案

您通常会在 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 错误页面。我的理解是,这些页面应该相对通用,因为 Web 应用程序当时拥有的只是错误代码,因此它们对于所有用户来说应该是相同的。

关于java - 如何将未经授权的用户重定向到某个JSP页面? (使用基于声明性角色的授权),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21522831/

相关文章:

java - Android:如何将变量应用于 toast ?

ios - 此服务器的证书无效

javascript - 在 JSP 或 Javascript 中获取标签的值

java - Spring/Java 从一个方法调用变量作为变量

java - 程序加载太多内容? ( java )

php - 将 PHP crypt() 结果存储在数据库中是否安全?

java - 通过 HTTP 保护 Spring Data RepositoryRestResource (CrudRepository),但不是在内部

jsp - 显示非英文字符 ??在 Action 类

html - 在 Eclipse IDE 之外使用 JSP 文件

java - Android 依赖项 'com.google.android.gms:play-services-stats' 具有不同版本的编译 (16.0.1) 和运行时 (17.0.0) 类路径