[使用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页面时。如何才能做到这一点?或者,处理未经授权的用户访问尝试的做法是什么?
答案 0 :(得分: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都是错误代码,所以对于所有用户它们应该是相同的。