疯狂

STANDING ON THE SHOULDERS OF GIANTS
posts - 481, comments - 486, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

在任何一种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权限时才能进
  入受保护目录。弹出验证


转载自:http://blog.csdn.net/swengineer/archive/2006/12/01/1424020.aspx

只有注册用户登录后才能发表评论。


网站导航: