tomcat 7 设置jdbc领域

9 篇文章 0 订阅

完整的配置

  <Realm className="org.apache.catalina.realm.JDBCRealm" 
         driverName="com.mysql.jdbc.Driver" 
         connectionURL="jdbc:mysql://localhost:3306/数据库名称?user=用户名&password=密码" 
         userTable="A" userNameCol="B" userCredCol="C" 
         digest="MD5" 
         userRoleTable="D" roleNameCol="E"/>

1.角色(Role)

可以在web.xml中也可以在tomcat目录中的conf/tomcat-users.xml中设置,示例:

web.xml中

<security-role>
    <role-name>dude</role-name>
</security-role>

tomcat7(安装目录)/conf/tomcat-users.xml

    ...
    <role rolename="tomcat"/>
    <role rolename="role1"/>
</tomcat-users>

不论在哪里设置角色,角色名都可以多个,角色名就像一个标签,它把用户聚集在一起,如果没有角色,就成了领域对多个未知的帐户.

2.用户表

在此只说jdbc,当然要说表了,表就是你的用户都在哪放着,tomcat只要求你提供表名(A),登陆时使用的用户名(B)在哪个列可以找到,登陆时使用的密码(C)在哪个列可以找到,

userTable="A" userNameCol="B" userCredCol="C"
多说两点:

1.用户表可有更多的列,只不过tomcat实现的ServletSecurity只关心这两列(用户名和密码),当然这是在认证为表单的前提下,如果你的应用不是基于表单认证,可以不要继续看下去.如果是,你的web.xml一定要有以下配置

  ...
  <login-config>
    <auth-method>FORM</auth-method>
    <realm-name>Tomcat Host Manager Application</realm-name>
    <form-login-config>
    	<form-login-page>/login.html</form-login-page>
    	<form-error-page>/deny.html</form-error-page>
    </form-login-config>
  </login-config>
</web-app>

以上是自定义表单,也是本文的基础.login.html中的表单元素你不可以更改,样式和布局还是着情美化的,login.html的表单

<form action="j_security_check" method="post">
name:<input name="j_username" />
password:<input type="password" name="j_password" />
<input type="submit" value="denglu" />
</form>

2.digest

如果没有这个属性,用户的密码是需要明文存储的,这显然是不能接受的,digest的值还决了你的密码列的数据类型或数据长度,可选的值为:SHA, MD2, or MD5,她的说明:

When a standard realm authenticates by retrieving the stored password and comparing it with the value presented by the user, you can select digested passwords by specifying the digest attribute on your <Realm> element. The value for this attribute must be one of the digest algorithms supported by the java.security.MessageDigest class (SHA, MD2, or MD5). When you select this option, the contents of the password that is stored in the Realm must be the cleartext version of the password, as digested by the specified algorithm
http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#Digested_Passwords


有了用户,有了角色,还要定义用户和角色之间的关系,就是用户要有哪些角色

userRoleTable="D" roleNameCol="E"

这行就是解决这个问题,D表示这个用户和角色的中间表名,E表示,我们定义的角色在哪个列可以找到

到此配置的部分可说的就结束了,有了角色,有个用户,有了用户和角色的关系,还要定义角色可以访问到的资源(当然包括url了),这个由你自已根据项目的情况着情配置,一个示例

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Wildcard means whole app requires authentication</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>dude</role-name>
    </auth-constraint>
...
</security-constraint>


关于配置的更多阅读可查看servlet规范,为什么这么作?登陆后怎么取得用户信息,这些都可以在规范中找到,不言而知的答案是你至少少写一个过滤器,判断用户是否在线,是否有操作这项功能的权利,而这些都由规范和tomcat来为你效劳了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值