tomcat安全机制j_security_check(简单版)

参考: http://www.blogjava.net/asktalk/archive/2005/07/23/8221.htmlhtml

在web应用中,对页面的访问控制一般经过程序来控制,流程为:
登陆 → 设置session → 访问受限页面时检查session是否存在,若是不存在,禁止访问java

对于较小型的web应用,能够经过tomcat内置的访问控制机制来实现权限控制。采用这种机制的好处是,程序中无需进行权限控制,彻底经过对tomcat的配置便可完成访问控制。web

实现:在用户访问受限页面时,若是用户没有登录则自动跳转到登录页面,只有经过登录验证有权限的用户能够访问受限资源。数据库

下面讲如何配置使用:浏览器

1.为了在tomcat页面设置访问权限控制,在项目的WEB-INF/web.xml文件中,进行以下设置:tomcat

<security-constraint>

   <!--1.被保护的资源 -->

    <web-resource-collection>

      <web-resource-name>testLogin</web-resource-name>

      <url-pattern>/protected/*</url-pattern>

    </web-resource-collection>

   <!--2.有权限的角色 -->

    <auth-constraint>

      <role-name>tian</role-name>

    </auth-constraint>

  </security-constraint>

 

   <!-- 3.登陆方式 -->

  <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>

其中,<url-pattern>中指定受保护的url,能够使用通配符*,一般对整个目录进行访问权限控制。(例子中指在protected目录下的全部文件都被保护);
<auth-constraint>中指定哪些角色能够访问<url-pattern>指定的url,在<role-name>中能够设置一个或多个角色名。(例子中角色名为tian的角色有访问权限)。session

 

2.使用的角色名来自tomcat的配置文件${CATALINA_HOME}/conf/tomcat-users.xml。 以下所示:jsp

<tomcat-users>

  <role rolename="tomcat"/>

  <role rolename="tian"/>

  <role rolename="manager"/>

  <user name="admin" password="admin" roles="tian,tomcat,manager" />

  <user name="tian" password="tian" roles="tian,manager" />

</tomcat-users>

其中,<role rolename="tian"/>指角色名为tian;post

<user name="admin" password="admin" roles="tian,tomcat,manager" />指经过登陆名admin和密码admin登录的用户拥有tian,tomcat,manager这3个角色的权限。url

所用角色名也能够本身配置,使用Realm,能够从数据库中获取,下篇《在tomcat中使用Realm》再讲。

 

3.<login-config>用来设置登陆方式;

<auth-method>的取值为BASIC与FORM。若是为BASIC,浏览器在须要登陆时弹出一个登陆窗口。若是为FORM方式,须要指定登陆页面和登陆失败时的提示信息显示页面。(例子中使用的登录方式为FROM表单登录)

其中的<form-login-page>指定登陆页面url,<form-error-page>指定登陆失败时的提示页面url。
登陆页面中,form的action,以及其中的用户名和密码两个参数的名称,都应取固定的值。登陆的后台处理程序为j_security_check;用户名和密码的参数名称分别为:j_usernamej_password
以下是登陆页面(如:login.jsp)的一段示例代码:

<form  method="post" action='j_security_check' >

        <label >帐号:</label>

        <input name="j_username" type="text"/><br>

        <br>

        <label >密码:</label>

        <input name="j_password" type="password"/><br>

        <br>

        <button id="j_login" type="submit" >登陆</button><br>

</form>

而BASIC的配置以下:

<login-config>  
  <auth-method>BASIC</auth-method>  
</login-config>
相关文章
相关标签/搜索