在 Tomcat 中设置 JDBCRealm
除了默认配置的 DataSourceRealm,Tomcat 还支持 JDBCRealm,它通过 JDBC 来访问记录在关系数据库里的认证信息。
JDBCRealm 的配置步骤如下:
- 在 $TOMCAT_HOME\conf\server.xml 配置 <Reaml/> 元素。
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost/tomcat"
connectionName="root" connectionPassword="root"
userTable="users" userNameCol="username" userCredCol="userpass"
userRoleTable="roles" roleNameCol="userrole" /><Reaml /> 元素属性说明:
属性 说明 className Tomcat 的 JDBCRealm 实现类 driverName JDBC 驱动类 connectionURL 数据库连接地址 connectionName 数据库登录用户 connectionPassword 数据库登录密码 userTable 用户表的表名 userNameCol 用户表中用户列的列名 userCredCol 用户表中密码列的列名 userRoleTable 角色表的表名 roleNameCol 角色表中的角色列 注:<Realm/> 元素可以放在 <Engine/> 元素中,这时该 Realm 会被所有应用共享。 放在 <Host/> 元素中,会被该 Host 下的应用程序共享。放在 <Context/> 元素中,则只有对应的应用程序能被访问。
- 将 JDBC 驱动 jar 文件放置在 $TOMCAT_HOME\lib 目录中。
- 在数据库中创建用户表与角色表,表名和命名要与上述的配置一致。
CREATE TABLE `users` (
`username` varchar(32) NOT NULL,
`userpass` varchar(32) NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `roles` (
`username` varchar(32) NOT NULL,
`userrole` varchar(32) NOT NULL,
PRIMARY KEY (`username`,`userrole`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; - 在表中配置用户与角色信息。
INSERT INTO `tomcat`.`users` (`username`, `userpass`) VALUES ('admin', 'admin');
INSERT INTO `tomcat`.`users` (`username`, `userpass`) VALUES ('huey', 'huey');
INSERT INTO `tomcat`.`users` (`username`, `userpass`) VALUES ('suer', 'suer'); INSERT INTO `tomcat`.`roles` (`username`, `role`) VALUES ('admin', 'admin');
INSERT INTO `tomcat`.`roles` (`username`, `role`) VALUES ('admin', 'common');
INSERT INTO `tomcat`.`roles` (`username`, `role`) VALUES ('huey', 'common');
INSERT INTO `tomcat`.`roles` (`username`, `role`) VALUES ('suer', 'common');
INSERT INTO `tomcat`.`roles` (`username`, `role`) VALUES ('suer', 'vip'); - 新建一个 Java Web 工程,编辑 web.xml 文件。
- 配置 <security-role/> 元素来定义角色。
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>common</role-name>
</security-role>
<security-role>
<role-name>vip</role-name>
</security-role> - 配置 <security-constraint/> 元素,指定角色可访问的资源集和可使用的 HTTP 方法。
<security-constraint>
<web-resource-collection>
<web-resource-name>Public resources</web-resource-name>
<url-pattern>/home/*</url-pattern>
<http-method>HEAD</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>common</role-name>
</auth-constraint>
</security-constraint> <security-constraint>
<web-resource-collection>
<web-resource-name>Secret resources</web-resource-name>
<url-pattern>/blog/*</url-pattern>
<url-pattern>/photo/*</url-pattern>
<http-method>HEAD</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>vip</role-name>
</auth-constraint>
</security-constraint> - 配置 <login-config/> 元素,指定认证方式为基本认证,并指定安全域。
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>hueyhome</realm-name>
</login-config> - 测试。
C:\Users\huey>curl -I -u "suer:suer" http://localhost:8080/helloweb/blog/index.html
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Pragma: No-cache
Cache-Control: no-cache
Expires: Thu, 01 Jan 1970 08:00:00 CST
Accept-Ranges: bytes
ETag: W/"261-1431758220107"
Last-Modified: Sat, 16 May 2015 06:37:00 GMT
Content-Type: text/html
Content-Length: 261
Date: Tue, 19 May 2015 11:44:20 GMT
在 Tomcat 中设置 JDBCRealm的更多相关文章
- tomcat中设置Java 客户端程序的http(https)访问代理
1.假定http/https代理服务器为 127.0.0.1 端口为8118 2.在tomcat/bin/catalina.sh脚本文件中设置JAVA_OPTS,如下图: 保存后重启tomcat就能生 ...
- tomcat中设置多项目共享jar;类包
随着服务器上的tomcat部署的项目越来越多,最近在部署一个新的项目的时候出现内存溢出的错误 Exception in thread "main" java.lang.OutOfM ...
- 使用eclipse在tomcat中设置项目启动的虚拟路径
很多时候我们在启动项目的时候都会在浏览器输入"localhost:+端口号+项目名称" 其实tomcat是可以省去这种麻烦的,通过设置项目的虚拟路径就可访问项目了 第一步 选择ec ...
- Tomcat SSL 设置
1. 先用如下命令生成tomcat 证书 cls rem please set the env JAVA_HOME before run this bat file SET JAVA_HOME=C:\ ...
- Tomcat学习笔记 - 错误日志 - NetBeans配置tomcat出错情况总结 -- 尚未授予访问 Tomcat 服务器的权限。请在服务器管理器的 Tomcat 定制器中设置 "manager-script" 角色的正确用户名和口令。 有关详细信息, 请查看服务器日志。
错误描述: 发布时控制台出现: 部署错误: 尚未授予访问 Tomcat 服务器的权限.请在服务器管理器的 Tomcat 定制器中设置 "manager-script" 角色的正确用 ...
- Eclipse中设置tomcat的启动内存
现象:眼下每次使用Eclipse启动Tomcat 的时候常常出现OutOfMemoryError thrown from the UncaughtExceptionHandler in thread ...
- 如何在idea中设置Tomcat虚拟路径
设置项目的根路径: 设置指定文件的在Tomcat中的虚拟路径: 代码: String fileName = MyFileUtil.getFileName(uploadFileName); File f ...
- Tomcat中JVM参数设置
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机.Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对JavaJVM有关内存方面的知识进 ...
- tomcat在ubuntu中设置开机启动
#!/bin/bash export JAVA_HOME=/usr/lib/jdk/jdk1.7.0_72 WEBROOT_PATH=/home/zhengze/workspace WEBSERVER ...
随机推荐
- HDU 1255 覆盖的面积 (线段树+扫描线+离散化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 题意很清楚,就是让你求矩阵之间叠加层数大于1的矩形块的面积和. 因为n只有1000,所以我离散化 ...
- poj3687
Labeling Balls Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9028 Accepted: 2444 De ...
- ssh使用ajax异步通讯. json与对象转换的几个小问题
首先是hibernate,用ssh做项目的时候,使用hibernate,这个hibernate博大精深,至今只懂皮毛.建对象时候使用它的一对多,多对多联系,. 这样子,对象转json的时候会产生循环依 ...
- 通过java发送http请求
通常的http请求都是由用户点击某个连接或者按钮来发起的,但是在一些后台的Java程序中需要发送一些get或这post请求,因为不涉及前台页面,该怎么办呢? 下面为大家提供一个Java发送http请求 ...
- 【MyLocations】标记位置App开发体会
实现功能: 1.能通过Cora Location获取地址信息 2.用户获取地址信息后能编辑相关信息 3.使用Core Data保存数据 4.使用MapKit,在Map上显示标记的位置,并可以编辑位置信 ...
- UML图示
来源: http://www.uml.org.cn/oobject/200901041.asp 近些天学习设计.由于没有具体项目,原有项目也没有什么设计的概念,只是看相关的书籍,所以着实有些抓狂.然最 ...
- 使用EA逆向生成数据库E-R图
1. 创建ODBC数据源 2. 逆向工程
- [置顶] VC++界面编程之--自定义CEdit(编辑框)皮肤
自定义编辑框是登陆界面经常用到的效果,所以我也模仿站酷网的素材做了个. 要想继承CCustomDraw来完全自绘CEdit控件,是不太可行的方案,因为一旦你完全重绘,那么你需要额外做以下几件事: 1. ...
- 获取设备上全部系统app信息
在获取android设备的全部程序信息一文中介绍了获取手机上全部app信息的方法,以下介绍过滤掉系统app的方法: MainActivity: package com.home.getsysapp; ...
- mysql自动备份策略
目标:每7天做一个完整备份,每天做一份binlog日志,第二周将之前的备份删除并产生新的完整备份和binlog日志,备份要求每天2:00自动完成 mysql 版本:mysql5.5 1.开启binlo ...