WEB应用中的身份验证(2)--Form身份验证Form-based Authentication

网上有很多关于此类文章,但是有很多文章将的含糊不清,让人看了很是郁闷,更有甚者竟然把没有测试的文章也帖出来,真不知道这些人怎么想的。。。哎~!

废话少说,让我们开始把~~!这些话上次已经说完了^_^

现在开始我们的Form-based Authentication吧,其实和BASIC基本上完全一样,就是拷贝~

要搭建整个流程需要四个阶段:

一、建立测试用数据库
       
我们这里用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(也可在里面建立几个文件),同时在根目录种创建login.jsperror.jsp
  

login.jsp

文件的内容如下,其中用户名的name属性j_username,密码的name属性j_password,表单的action属性j_security_check,这三个属性值不能变,固定。
<%@
page language="java" import="java.util.*" pageEncoding="gb2312"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>缘雨测试</title>

  </head>

  <body>

  <form method="POST" action="j_security_check">

  <table>

      <tr>

<td> 用户名:</td>

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

</tr>

      <tr>

<td> 密码:</td>

<td><input type="text" name="j_password"></td>

</tr>

      <tr>

<td colspan="2"><input type="submit" value="Log in"></td>

</tr>

      <tr><td></td></tr>

   </table>

  </form>

  </body>

</html>

error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>缘雨测试</title>

  </head>

 

  <body>

    兄弟访问失败了~~!

  </body>

</html>


  
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>FORM</auth-method>
      <realm-name>Web Demo</realm-name>
    </login-config>

四、重启Tomcat,使设置生效

总结测试:
  
通过上面的四部分配置,当你再次访问程序中受保护的地址,如:http://localhost/sercurityTest/admin时回首先弹出登陆界面:



这时, 输入用户名:zhangdongyu 密码:loveyuanyuan 才可以进入admin目录



 
以上程序经测试成功~小弟才疏学浅,希望高手不惜吝啬批评指教~谢谢~

 

 

 

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