1. 下载MySQL JDBC驱动(mysql-connector-java-x.x.x-bin.jar)放到TOMCAT_HOME/lib目录下。
2. 配置TOMCAT_HOME/server.xml,添加JDBCRealm,注释掉原来的LockOutRealm。
1
2
3
4
5
6
7
8
9
|
<
Realm
className
=
"org.apache.catalina.realm.JDBCRealm"
driverName
=
"org.gjt.mm.mysql.Driver"
connectionURL
=
"jdbc:mysql://127.0.0.1:3306/authority?user=root&password=123456"
userTable
=
"users"
userNameCol
=
"user_name"
userCredCol
=
"user_pass"
userRoleTable
=
"roles"
roleNameCol
=
"role_name"
/>
<!-- <Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>-->
|
3. 连接数据库,创建BAISC访问用户表和用户角色表,并插入数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
CREATE TABLE `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(50) NOT NULL,
`user_pass` varchar(50) NOT NULL,
`user_mark` varchar(255) DEFAULT '',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `roles` (
`role_id` int(11) NOT NULL AUTO_INCREMENT,
`role_name` varchar(50) NOT NULL,
`user_name` varchar(50) NOT NULL,
PRIMARY KEY (`role_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
INSERT INTO 'authority'.'users'('user_id','user_name','user_pass','user_mark') VALUES (1, 'admin', 'password', '');
INSERT INTO 'authority'.'users'('user_id','user_name','user_pass','user_mark') VALUES (2, 'guest', 'password', '');
INSERT INTO 'authority'.'roles'('role_id','role_name','user_name') VALUES (1,'admin','admin');
INSERT INTO 'authority'.'roles'('role_id','role_name','user_name') VALUES (2,'guest','guest');
|
4. 在WEB Project的WEB-INF/web.xml的web-app节点下增加如下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<
security-constraint
>
<
web-resource-collection
>
<
web-resource-name
>Web Project Name</
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
>favourite basic realm</
realm-name
>
</
login-config
>
<
security-role
>
<
role-name
>admin</
role-name
>
</
security-role
>
|
5. 启动Tomcat,输入应用的访问地址,就会弹出用户登录的输入框,输入正确的用户名和密码后就可以访问受保护的资源。
需要注意的是:只有首次访问受保护的资源时才需要进行登录,这是因为用户登录后相关的信息都放到Tomcat服务器的缓存中,除非用户关闭浏览器或清除缓存,否则认证信息一直存在,用户也就不需要再次进行登录。
本文转自 genuinecx 51CTO博客,原文链接:http://blog.51cto.com/favccxx/1877588,如需转载请自行联系原作者