weixin_42210357 2008-06-27 13:14
浏览 519
已采纳

关于Tomcat的 j_security_check处理顺序的疑问

我要做一个东西,在用户进入Web画面的时候,要从WEB-INF目录下读取一个xml文件,将该xml文件的部分内容显示到该画面。

我通过下面的方法取文件

[b]
ServletContext servletContext = context.getServletContext();
InputStream inputStream = servletContext.getResourceAsStream("config.xml");
Document document = MyUtil.buildDocument(inputStream);
Element rootElm = document.getDocumentElement();
[/b]

但是目前的情况是这样,Sample的做法是通过 j_security_check的验证,转向到各自不同的画面,然后来做我上述的处理。
目前只是做一个Demo,我不想用 j_security_check验证,因此,我将该验证的处理以及配置都删除,直接转向到某个画面,结果无法得到
Document 和 Element。

我大概分析了一下原因,可能是没有Session的缘故,但是不是很确定。不太明白 j_security_check的处理机制,请大家帮忙分析一下 j_security_check是怎么处理的,我该如何去做才能够产生我要的效果?

  • 写回答

1条回答

  • wangxin0072000 2008-06-28 00:26
    关注

    引子:
    j_security_check,正确的说是JAAS验证。我不太清楚你是在什么环境下启动的tomcat,如果是在MyEclipse下运行,请检验window->Preferences->MyEclipse->Application Server->Tomcat->Tomcat5.x->JDK目录下Optioal Java VM arguments
    中有没有类似-Djava.security.manager -Djava.security.policy=XXX的参数。好了,

    1 现在说一下大概原理:
    是用JAAS安全验证就是当用户在java程序中(正确的说通过JVM)通过网络或者IO的方式访问资源时,JVM会使用java.security.manager或者其他java验证的类做代理去访问。在访问之前jvm会检验访问者是否有权访问。那么如何确认用户是否有权访问呢?jvm会通过java.security.policy类查找授权用户的权限。
    2 说说你的问题:有可能你访问的config.xml 已经被JAAS所控制(一般写在一个JAR包或者DB中,如果在DB中,可以在server.xml中配置),因为你删除tomcat中了关于JAAS的配置,所以你的java程序访问config.xml的时候JAAS无法找到你的权限,所以理论上会抛出SecurityException的异常(也许你在捕捉Exception异常的时候已经捕获,只不过你没注意)。
    3 说说解决办法,很简单。除了去除所有关于JAAS的配置(包括web.xml和server.xml等)。还有把window->Preferences->MyEclipse->Application Server->Tomcat->Tomcat5.x->JDK目录下Optioal Java VM arguments中的参数去掉。这个参数实际指定了你的web应用在JVM中的代理。如果去掉,就相当于没有安全认证的裸奔。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料