最近做了个项目,是在之前的adapter上面,做个功能维护的,也就是简单的CRUD,但是问题来了,这个功能没有做权限,也没有做登录,这个放在网络上就是裸奔啊.后来想到了可以借用tomcat的Realm做个认证,反正使用的人也不多,也就是几个人去做下调整.
现在说怎么使用Realm吧
在web.xml中,添加
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Resource</web-resource-name>
<url-pattern>/management/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>toptown</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>UserDatabase</realm-name>
</login-config>
<security-role>
<role-name>toptown</role-name>
</security-role>
这个就不多说了,就是访问的url 匹配management/*,那么是需要 toptown这个role,使用Basic认证.注意
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>UserDatabase</realm-name>
</login-config>
这里使用的real-name是 UserDatabase,
<auth-constraint>
<role-name>toptown</role-name>
</auth-constraint>
与
<security-role>
<role-name>toptown</role-name>
</security-role>
的role-name需要一致.
然后配置
tomcat/conf/tomcat-user.xml 添加一个role,和user,并指定user的role.
web.xml的role必须是这里定义的一个,并且至少有一个用户使用了该role,否则web.xml的配置就没用了,
<role rolename="toptown"/>
<user username="toptown" password="*****" roles="toptown"/>
然后配置tomcat/conf/server.xml
将如下的配置开启
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
这里的UserDatabase与web.xml指定需要一致.
然后重启tomcat后,访问指定的url,发现需要弹出登陆窗口.输入密码后即可访问了.
这样对一些简单的应用,如果不需要复杂的权限,但是需要一些简单的登陆操作,可以使用这种方式.