Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security GWT安全性:web.xml过滤器与覆盖RemoteServiceServlet中的processPost()_Security_Gwt - Fatal编程技术网

Security GWT安全性:web.xml过滤器与覆盖RemoteServiceServlet中的processPost()

Security GWT安全性:web.xml过滤器与覆盖RemoteServiceServlet中的processPost(),security,gwt,Security,Gwt,我有一个驻留在单个网页中的GWT应用程序,我认为这是相当典型的。我正在确保它的安全,我需要关于选择适当方法的建议。我的最终目的是检查每个gwtrpc服务器调用上是否存在经过身份验证的会话 过去,在处理基于servlet/JSP的web应用程序时,我在web.xml中使用了过滤器和过滤器映射定义。考虑到这样的应用程序通常由许多网页组成,重定向到登录页面也随之发生,这一点非常有吸引力。但对于GWT及其经常使用的单屏幕特性,我觉得重写RemoteServiceServlet的processPost()

我有一个驻留在单个网页中的GWT应用程序,我认为这是相当典型的。我正在确保它的安全,我需要关于选择适当方法的建议。我的最终目的是检查每个gwtrpc服务器调用上是否存在经过身份验证的会话

过去,在处理基于servlet/JSP的web应用程序时,我在web.xml中使用了过滤器过滤器映射定义。考虑到这样的应用程序通常由许多网页组成,重定向到登录页面也随之发生,这一点非常有吸引力。但对于GWT及其经常使用的单屏幕特性,我觉得重写RemoteServiceServletprocessPost()函数可能是更好的方法。我的意图是检查现有会话是否存在,然后在需要时抛出适当的异常。然后,客户机将根据抛出的异常确定操作过程,从而做出相应的反应(即登录弹出窗口等)


我知道其他现有的解决方案,比如SpringSecurity,但我真的很想听听大家对我的想法的看法。多谢各位

我认为您不应该自己检查经过身份验证的会话。让应用程序容器来处理这个问题。当然,要做到这一点,您需要在web.xml文件中设置登录配置部分和安全约束

保护应用程序特定部分的一个好方法是(在实际显示屏幕之前)检查是否允许当前用户访问。从远程servlet中,您可以调用
getThreadLocalRequest().getUserPrincipal()
来获取实际用户(如果未经过身份验证,则为null),并调用
getThreadLocalRequest().isUserInRole(“admin”)
来进行自动化


希望这对你有帮助

我正在使用手动连接的外部安全存储库,因此必须手动检查会话是否存在。我不依赖基于应用服务器的安全性。不过,您应该尽量避免将应用程序安全性和应用程序逻辑混为一谈。这是个坏主意。您可以尝试定义自己的服务器登录模块(JSR-196)。这样,您就可以一次性处理安全性并构建多个应用程序,而无需考虑这一点。您正在使用哪个应用程序服务器?