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

时间:2015-01-25 11:44:32

标签: security gwt

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

过去在处理基于servlet / JSP的Web应用程序时,我在web.xml中使用了过滤器过滤器映射定义。考虑到这些应用程序通常由许多网页组成,并且重定向到登录页面,它就像一个魅力。但是对于GWT及其经常使用的单屏特性,我觉得重写 RemoteServiceServlet processPost() 功能可能是一个更好的方法。我的目的是检查是否存在现有会话,然后在需要时抛出适当的异常。然后,客户端将根据返回的异常情况确定操作过程,从而做出相应的反应(即登录弹出等)。

我知道其他现有解决方案,例如Spring安全性,但我真的很想听听有关我的想法的意见。谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您不应该自己检查经过身份验证的会话。让应用程序容器处理它。当然,为了做到这一点,您需要在web.xml文件中使用login-config部分和安全性约束。

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

希望这对你有所帮助!