Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源用户访问控制
软件版本:
Tomcat 7.0.40
Mysql: 5.1
Host: CentOS 6.3 64bit
使用JDBCRealm (Tomcat 会使用所给的JDBC Connecter 自己去连MySQL 数据库并进行用户验证):
1) 下载MySQL-JDBC connector 如mysql-connector-java-5.1.24-bin.jar放到$CATALINA_HOME/lib目录下;
2) 连上MySQL 创建数据库(比如数据库名字叫DBName),在此库里面创建2个表(users表和roles表),表结构如下:
CREATE TABLE `roles` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Role` varchar(50) DEFAULT NULL,
`Username` varchar(50) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ;
CREATE TABLE `users` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Username` varchar(50) NOT NULL DEFAULT '',
`Password` varchar(50) DEFAULT '',
`Email` varchar(255) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ;
INSERT INTO `users` VALUES (1,'root','password',NULL);
INSERT INTO `roles` VALUES (1,'rootgrp','root');
表示root用户在rootgrp组里。
3)配置Tomcat $CATALINA_HOME/conf/server.xml
比如在Engine Section下增加:
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="com.mysql.jdbc.Driver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" <!-- 使用Tomcat 新的ConnectionPool-->
connectionURL="jdbc:mysql://localhost:3306/DBName?user=root&password=password"
userTable="users"
userNameCol="username"
userCredCol="password"
userRoleTable="roles"
roleNameCol="role"/>
注意: Tomcat7默认的server.xml里面在Engine里面也有一段Realm配置代码,如下面所示, 此处需要注释掉它,否则会出问题。
<!-- <Realm className="org.apache.catalina.realm.LockOutRealm"> -->
<!--
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
-->
4)在你应用包的WEB-INF/web.xml里增加如下,做资源访问限制,否则上面配置不起作用,如果想让访问整个site都起作用,在webapps/ROOT/WEB-INF/web.xml里增加以下内容。
<web-app .........>
..................
<security-constraint>
<web-resource-collection>
<web-resource-name>web pages</web-resource-name>
<url-pattern>/*</url-pattern> <!-- 限制整个节点 只有rootgrp的人才能访问-->
</web-resource-collection>
<auth-constraint>
<role-name>rootgrp</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Tomcat Application</realm-name>
</login-config>
<security-role>
<description>
The role that is required to access the pages of this website
</description>
<role-name>rootgrp</role-name>
</security-role>
.............
</web-app>
重启即可。
如果想用DataSourceRealm去做访问控制认证,重复以上步骤,但唯一需要改动的是将第3)步替换为下面的3A)步骤,
3A)在$CATALINA_HOME/conf/server.xml文件中,在<GlobalNamingResources>一节下增加一个DataSource资源如下:
<GlobalNamingResources>
<Resource name="jdbc/DBName" auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" <!-- 使用Tomcat 新的ConnectionPool-->
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/DBName" />
</GlobalNamingResources>
然后再在此server.xml里面的如<Engine>Section下面增加以下内容
<Realm className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="jdbc/DBName"
userTable="users"
userNameCol="Username"
userCredCol="Password"
userRoleTable="roles"
roleNameCol="Role"/>
同样的,需要把Server.xml里面默认的那个Realm给注释掉。
重启Tomcat即可。
Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源用户访问控制的更多相关文章
- Tomcat7.0.40注册到服务启动报错error Code 1 +connector attribute sslcertificateFile must be defined when using ssl with apr
Tomcat7.0.40 注册到服务启动遇到以下几个问题: 1.启动报错errorCode1 查看日志如下图: 解决办法: 这个是因为我的jdk版本问题,因为电脑是64位,安装的jdk是32位的所以会 ...
- Apache2.2+Tomcat7.0整合配置详解
一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Lin ...
- Servlet实现表单提交(MyEclipse10,Tomcat7.0,JDK1.7,)——Java Web练习(一)
1.MyEclipse|File|New|Project|Web Project 填写Project Name:exServlet,点选Java EE 6.0(配套Tomcat7.0) 2.代码 ...
- Ubuntu12.04 配置Java开发环境:JDK1.7+Eclipse+Tomcat7.0
软硬件环境 Ubuntu12.04+JDK1.7+Eclipse+Tomcat7.0 内容列表 1.安装JDK1.7,配置JAVA环境 2.安装Eclipse 3.安装Tomcat7.0 1.安装JD ...
- 【转】Tomcat7.0.42源代码运行环境搭建
转自:http://tyrion.iteye.com/blog/1903608 以前看过Tomcat5的一部分源代码,当时只看了个大概的启动分析,后来看了<How Tomcat Works> ...
- 编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)
编译可在Nexus5上运行的CyanogenMod13.0 ROM (基于Android6.0) 作者:寻禹@阿里聚安全 前言 下文中无特殊说明时CM代表CyanogenMod的缩写. 下文中说的“设 ...
- 【推荐】CentOS安装Tomcat-7.0.57+启动配置+安全配置+性能配置
注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Tomcat之前,请确保已经安装了JDK-1.7环境,具体见<CentOS安装JDK-1.7>. ...
- 驱动开发学习笔记. 0.02 基于EASYARM-IMX283 烧写uboot和linux系统
驱动开发读书笔记. 0.02 基于EASYARM-IMX283 怎么烧写自己裁剪的linux内核?(非所有arm9通用) 手上有一块tq2440,但是不知道什么原因,没有办法烧boot进norflas ...
- Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification version
Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification ...
随机推荐
- Linux 安装java
Linux安装Java之后,不用像Windows那样设置环境变量,直接就可在命令行当中输入java或者javac看到效果
- python学习随笔
1 高阶函数的使用: import math def add(x, y, f): return f(x) + f(y) sq = math.sqrt print add(25, 9,sq) 2. ma ...
- 控制台console
先的简单介绍一下chrome的控制台,打开chrome浏览器,按f12就可以轻松的打开控制台 大家可以看到控制台里面有一首诗还有其它信息,如果想清空控制台,可以点击左上角那个来清空,当然也可以通过在控 ...
- 【POJ11855】 Buzzwords (后缀数组)
Description The word “the” is the most commonthree-letter word. It evenshows up inside other words, ...
- h.264并行解码算法2D-Wave实现(基于多核共享内存系统)
cache-coherent shared-memory system 我们最平常使用的很多x86.arm芯片都属于多核共享内存系统,这种系统表现为多个核心能直接对同一内存进行读写访问.尽管内存的存取 ...
- QT 读写二进制 (数值)高位在前
在人们的计数规则中,一般都认为高位在前,即往前的地位大,如123,我们认为是一百二十三, 但在计算机中数值是以二进制存储的,字节是最小的存储单位,如int(32位),占4个字节,每个字节有八位, 24 ...
- Android ServiceConnection类的onServiceDisconnected(ComponentName name)在什么时候执行
ServiceConnection类中的两个方法非别在服务连接成功时.不成功时调用.其中onServiceDisconnected()方法在连接正常关闭的情况下是不会被调用的, 该方法只在Servic ...
- hadoop单机安装
1.解压hadoop-1.0.3-bin.tar.gz放到指定目录下. 2.安装java环境,参照文档 3.Ssh无密登录 4.修改conf下四个文件 Hadoop-env.sh: export JA ...
- poj2482
(题外话:这题这是ACMer的福利啊……)我非常不擅长做矩形类的数据结构一般来说,二维的问题我们要转化为一维来考虑感觉一般的手法是对一维排序,并且线性扫描这一维,然后用各种数据结构维护另一维上的最优值 ...
- BZOJ1699: [Usaco2007 Jan]Balanced Lineup排队
1699: [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 933 Solved: 56 ...