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>
相關文章
相關標籤/搜索