Security GWT安全性:web.xml过滤器与覆盖RemoteServiceServlet中的processPost()
我有一个驻留在单个网页中的GWT应用程序,我认为这是相当典型的。我正在确保它的安全,我需要关于选择适当方法的建议。我的最终目的是检查每个gwtrpc服务器调用上是否存在经过身份验证的会话 过去,在处理基于servlet/JSP的web应用程序时,我在web.xml中使用了过滤器和过滤器映射定义。考虑到这样的应用程序通常由许多网页组成,重定向到登录页面也随之发生,这一点非常有吸引力。但对于GWT及其经常使用的单屏幕特性,我觉得重写RemoteServiceServlet的processPost()函数可能是更好的方法。我的意图是检查现有会话是否存在,然后在需要时抛出适当的异常。然后,客户机将根据抛出的异常确定操作过程,从而做出相应的反应(即登录弹出窗口等)Security GWT安全性:web.xml过滤器与覆盖RemoteServiceServlet中的processPost(),security,gwt,Security,Gwt,我有一个驻留在单个网页中的GWT应用程序,我认为这是相当典型的。我正在确保它的安全,我需要关于选择适当方法的建议。我的最终目的是检查每个gwtrpc服务器调用上是否存在经过身份验证的会话 过去,在处理基于servlet/JSP的web应用程序时,我在web.xml中使用了过滤器和过滤器映射定义。考虑到这样的应用程序通常由许多网页组成,重定向到登录页面也随之发生,这一点非常有吸引力。但对于GWT及其经常使用的单屏幕特性,我觉得重写RemoteServiceServlet的processPost()
我知道其他现有的解决方案,比如SpringSecurity,但我真的很想听听大家对我的想法的看法。多谢各位 我认为您不应该自己检查经过身份验证的会话。让应用程序容器来处理这个问题。当然,要做到这一点,您需要在web.xml文件中设置登录配置部分和安全约束 保护应用程序特定部分的一个好方法是(在实际显示屏幕之前)检查是否允许当前用户访问。从远程servlet中,您可以调用
getThreadLocalRequest().getUserPrincipal()
来获取实际用户(如果未经过身份验证,则为null),并调用getThreadLocalRequest().isUserInRole(“admin”)
来进行自动化
希望这对你有帮助 我正在使用手动连接的外部安全存储库,因此必须手动检查会话是否存在。我不依赖基于应用服务器的安全性。不过,您应该尽量避免将应用程序安全性和应用程序逻辑混为一谈。这是个坏主意。您可以尝试定义自己的服务器登录模块(JSR-196)。这样,您就可以一次性处理安全性并构建多个应用程序,而无需考虑这一点。您正在使用哪个应用程序服务器?