如何在web.xml配置URL映射限制访问?(How to configure url mappin

2019-07-30 04:17发布

我有以下结构的几页。

--Project
  |---WebContect
      |----Admin/ *
      |----Author/ * 
      |----Readonly/ * 
      |----Index.jsp

我想限制访问的网页,用户AdminAuthorReadonly 。 我不希望任何人访问这些页面。 如果有人试图这样做,应该被重定向到index.jsp

那来在我心中最简单的方法是使用Filter ,但我试图找到,如果可能用做web.xml

Answer 1:

如果你想, 没有人能够直接访问这些页面,只需把它们放在/WEB-INF文件夹中。

Project
 `-- WebContect
      |-- WEB-INF
      |    |-- Admin
      |    |-- Author
      |    `-- Readonly
      `-- Index.jsp

这样的网页并不公开访问,但只能由执行前的servlet。 当终端用户试图直接访问它,所有他会得到一个HTTP 404错误。

一个替代方案是配置角色少<security-constraint>

<security-constraint>
    <display-name>Restrict direct access to certain folders</display-name>
    <web-resource-collection>
        <web-resource-name>Restricted folders</web-resource-name>
        <url-pattern>/Admin/*</url-pattern>
        <url-pattern>/Author/*</url-pattern>
        <url-pattern>/Readonly/*</url-pattern>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

当最终用户试图访问他们,都是他会得到一个HTTP 403错误。

无论哪种方式,它是不可能重定向到终端用户index.jsp这种方式。 只有一个Filter能做到这一点。 你可以配置index.jsp的错误页面位置404或403

<error-page>
    <error-code>404</error-code>
    <location>/index.jsp</location>
</error-page>

但是,这将涵盖所有 404(或403的),不知道这是你想要的。



Answer 2:

你试试这个? (样品为URL映射)

<security-constraint>   
                <web-resource-collection>   
                        <web-resource-name>Protected Area</web-resource-name>   
                        <url-pattern>/*</url-pattern>   
                </web-resource-collection>   

                <auth-constraint>   
<--! These are the groups in AD -->   
                        <role-name>Engineering</role-name>   
                        <role-name>Migration Expert</role-name>   
                        <role-name>Developers</role-name>   

                </auth-constraint>   
        </security-constraint>   

  <security-constraint>   
   <web-resource-collection>   
      <url-pattern>/update/*</url-pattern>   
   </web-resource-collection>   
  </security-constraint>   

        <login-config>   
                <auth-method>BASIC</auth-method>   
                <realm-name>Services Portal</realm-name>   
        </login-config>


Answer 3:

如果你想通过角色权限隆重访问网页/文件夹,你必须在你的网络的XML文件的安全性约束

  <security-constraint>
    <web-resource-collection>
      <web-resource-name>DESC_OF_FOLDER</web-resource-name>
      <url-pattern>/users/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>REGISTERED_USER_ROLE</role-name>
    </auth-constraint>
  </security-constraint>

角色可以通过这个代码,如果你使用的是标准JAAS认证被收购

        if ((request.getUserPrincipal().getName()) != null) {
            String userName = request.getUserPrincipal().getName().trim();
            .....

            if (request.isUserInRole("REGISTERED_USER_ROLE")) {
                .....
            } 
         }

希望这可以帮助

UPDATE

而对于重定向到登录页面,你应该也有在web.xml是这样的

<form-login-config>
  <form-login-page>/login.jsp</form-login-page>
  <form-error-page>/error.jsp</form-error-page>
</form-login-config>


文章来源: How to configure url mapping in web.xml to restrict access?