如何保护WEB站点中的特定资源

netschina 2003-10-23 02:06:17
我们公司要开始一个网站,在网站中有一些内容只有通过身份认证的用户才能下载,为了防止用户通过直接输入URL路径的方式来下载内容,我在站点设置中把这些资料定义为加密资源,并给定了相应的用户才能访问,在WEB.XML中的设置如下:
<security-constraint>

<web-resource-collection>
<web-resource-name>Secure resources</web-resource-name>
<url-pattern>/file/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>

<auth-constraint>
<role-name>user</role-name>
</auth-constraint>

</security-constraint>
这一段文字设置只有用户角色为“user”的人才能访问,请问当用户通过身份认证后,我怎么才能建立这个角色
...全文
24 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuai007 2003-10-24
  • 打赏
  • 举报
回复
第一种方法的优点是很明显的,它很好的实现了权限和角色的关系。(角色可以多样,相应的权限也就可以多样化)
比如普通用户可以访问一些公开的内容,注册用户可以享受一些特殊的待遇,当然还可以更高级的VIP用户,你的资源可以分别划分处理。
我学JAVA也不是很长时间,大家一起学习,有说错的地方还请高手指正!:)


netschina 2003-10-24
  • 打赏
  • 举报
回复
多谢shuai007(城市劣人),你说的简单的方法已经可以实现我的要求。
我还想请问一下,第一种方法有什么优点,据说是可以实现单点登陆,是这样吗?
shuai007 2003-10-23
  • 打赏
  • 举报
回复
一个可行的办法是通过数据库来建立你的角色认证
以tomcat为例:server.xml中当然选择数据库的Realm,如:(mysql为例)
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost/数据源"
connectionName="数据库用户名" connectionPassword="数据库密码"
userTable="数据表名" userNameCol="userId" userCredCol="password"
userRoleTable="user_role" roleNameCol="role_name" />
其中userTable可以作为你的注册的用户(用户ID,用户密码)
userRoleTable就是分配给他的用户角色(对应userTable中的用户ID,和角色名字(role_name字段))

当然你也可以用类似的UserDatabaseRealm、MemoryRealm
tomcat-users.xml中的就是属于UserDatabaseRealm的

当然你需要在你的应用中(web.xml):
<security-constraint>
<web-resource-collection>
<web-resource-name>XXXX</web-resource-name>
<url-pattern>/XXX.do</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>XXXX</web-resource-name>
<url-pattern>/XXXX.do</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>role_name</role-name>---对应userRoleTable中的role_name字段值
</auth-constraint>
</security-constraint>
和:
<security-role>
<role-name>role_name</role-name>---对应userRoleTable中的role_name字段值
</security-role>

不知道这种方法符合不符合你的要求,当然可能还有更好的办法,呵呵,不过我还不知道,希望有好的办法的兄弟们告诉一二。

还有一种比较简单的方法:你为了防止用户通过直接输入URL路径的方式来下载内容,那么你可以把需要保护的内容方放在WEB-INF文件夹下,通过控制器来访问(当然是通过用户认证登陆来实现)
mailguoyy 2003-10-23
  • 打赏
  • 举报
回复
gz
allan1031 2003-10-23
  • 打赏
  • 举报
回复
如果是TOMCAT的话
修改
\conf 下的tomcat-users.xml文件,在里面添加个用户就成了
如果是其他的服务器的话,那就要参照具体的配置文件了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧