1. 下载MySQL JDBC驱动(mysql-connector-java-x.x.x-bin.jar)放到TOMCAT_HOME/lib目录下。


2. 配置TOMCAT_HOME/server.xml,添加JDBCRealm,注释掉原来的LockOutRealm。

<RealmclassName="org.apache.catalina.realm.JDBCRealm"driverName="org.gjt.mm.mysql.Driver"connectionURL="jdbc:mysql://127.0.0.1:3306/authority?user=root&amp;password=123456"userTable="users"userNameCol="user_name"userCredCol="user_pass"userRoleTable="roles"roleNameCol="role_name"/><!--<RealmclassName="org.apache.catalina.realm.LockOutRealm"><RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm>-->


3. 连接数据库,创建BAISC访问用户表和用户角色表,并插入数据。

CREATETABLE`users`(`user_id`int(11)NOTNULLAUTO_INCREMENT,`user_name`varchar(50)NOTNULL,`user_pass`varchar(50)NOTNULL,`user_mark`varchar(255)DEFAULT'',PRIMARYKEY(`user_id`))ENGINE=InnoDBAUTO_INCREMENT=3DEFAULTCHARSET=utf8;CREATETABLE`roles`(`role_id`int(11)NOTNULLAUTO_INCREMENT,`role_name`varchar(50)NOTNULL,`user_name`varchar(50)NOTNULL,PRIMARYKEY(`role_id`))ENGINE=InnoDBAUTO_INCREMENT=3DEFAULTCHARSET=utf8;INSERTINTO'authority'.'users'('user_id','user_name','user_pass','user_mark')VALUES(1,'admin','password','');INSERTINTO'authority'.'users'('user_id','user_name','user_pass','user_mark')VALUES(2,'guest','password','');INSERTINTO'authority'.'roles'('role_id','role_name','user_name')VALUES(1,'admin','admin');INSERTINTO'authority'.'roles'('role_id','role_name','user_name')VALUES(2,'guest','guest');


4. 在WEB Project的WEB-INF/web.xml的web-app节点下增加如下内容

<security-constraint><web-resource-collection><web-resource-name>WebProjectName</web-resource-name><url-pattern>/*</url-pattern></web-resource-collection><auth-constraint><role-name>admin</role-name></auth-constraint></security-constraint><login-config><auth-method>BASIC</auth-method><realm-name>favouritebasicrealm</realm-name></login-config><security-role><role-name>admin</role-name></security-role>


5. 启动Tomcat,输入应用的访问地址,就会弹出用户登录的输入框,输入正确的用户名和密码后就可以访问受保护的资源。


需要注意的是:只有首次访问受保护的资源时才需要进行登录,这是因为用户登录后相关的信息都放到Tomcat服务器的缓存中,除非用户关闭浏览器或清除缓存,否则认证信息一直存在,用户也就不需要再次进行登录。