WEB應用中的身份驗證(1)--基本身份驗證BASIC authorization method

網上有很多關於此類文章,但是有很多文章將的含糊不清,讓人看了很是鬱悶,更有甚者竟然把沒有測試的文章也帖出來,真不知道這些人怎麼想的。。。哎~!

廢話少說,讓我們開始把~~!

在任何一種WEB應用開發中,不論大中小規模的,每個開發者都會遇到一些需要保護程序數據的問題,涉及到用戶的LOGIN ID和PASSWORD。那麼如何執行驗證方式更好呢?實際上,有很多方式來實現。在本文裏,我們不會把所有的驗證方法都考慮到,我們的目的是讓你學會如何以最簡單最方便的驗證方法來完成。下面將討論基本驗證方式之一(BASIC authorization method)

要搭建整個流程需要四個階段:

一、建立測試用數據庫
        我們這裏用Mysql進行測試,其他數據庫完全一樣。
    1、創建用戶表
            CREATE TABLE users (
                  id int(11) NOT NULL auto_increment,
                    username varchar(20) NOT NULL,
                    password varchar(20) NOT NULL,
                    PRIMARY KEY  (id)
               )

    2、創建權限表(此事例中用不到)
           CREATE TABLE roles(
                    id int(11) NOT NULL auto_increment,
                    rolename varchar(20) NOT NULL,
                    PRIMARY KEY  (id)
               )
               
    3、創建用戶-權限對應表
       CREATE TABLE user_roles (
          id int(11) NOT NULL auto_increment,
          username varchar(20) NOT NULL,
          rolename varchar(20) NOT NULL,
          PRIMARY KEY  (id)
        )
        
    4、插入數據
       insert into users(username,password) values('zhangdongyu', 'loveyuanyuan')
       insert into roles(rolename) values('manager')
       insert into user_roles(username,rolename) values('zhangdongyu', 'manager')
       
二、修改${tomcat}/conf/server.xml
  找到
   <!--
      <Realm className="org.apache.catalina.realm.MemoryRealm" />
      -->
     
    在上面這句話下面添加一下內容:
    <Realm
      className="org.apache.catalina.realm.JDBCRealm"
      debug="99"
      driverName="org.gjt.mm.mysql.Driver"
      connectionURL="jdbc:mysql://localhost/weblogin" <!--數據庫連接地址-->
      connectionName="root"              <!--數據庫用戶名-->
           connectionPassword="123"            <!--數據庫密碼-->
          userTable="users"                <!--用戶表-->
           userNameCol="username"              <!--用戶名列-->
           userCredCol="password"             <!--密碼列-->  
           userRoleTable="user_roles"            <!--用戶權限對應表-->
           roleNameCol="rolename"              <!--權限列-->
    />   

三、創建工程
  在Eclipse創建一個web工程sercurityTest,在WebRoot下面創建一個文件夾admin(也可在裏面建立幾個文件)


  Eclipse截圖


  在web.xml文件中添加以下片段:
    <security-constraint>
      <web-resource-collection>
       <web-resource-name>Web Demo</web-resource-name>
       <url-pattern>/admin/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
       <role-name>manager</role-name>
      </auth-constraint>
     </security-constraint>
    <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>Web Demo</realm-name>
    </login-config>

四、重啓Tomcat,使設置生效

總結測試:
  通過上面的四部分配置,當你再次訪問程序中受保護的地址,如:http://localhost/sercurityTest/admin時
  會彈出驗證對話框,讓你輸入用戶名和密碼,只有輸入庫中的用戶名密碼並且該用戶有manager權限時才能進
  入受保護目錄。彈出驗證
  
  以上程序經測試成功~小弟才疏學淺,希望高手不惜吝嗇批評執教~謝謝~

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章