几天后我使用了GWT 2.0.因此,我尝试使用登录表单编写基本应用程序,并且只有在我登录时才可访问页面.
通常在我的带有jsf的Web应用程序中,我使用Spring Security 3.0来配置和保护这种应用程序.所以,我决定尝试用我的GWT 2.0应用程序做同样的事情.
我已经很好地配置了Spring Security的服务器部分.因此,从我的GWT登录页面,我可以输入我的登录名/密码,并通过Spring Security执行身份验证.重定向到安全页面已完成,我可以通过对使用Spring Security的SecurityContext的安全服务的rpc调用来获取连接的用户.所以,我觉得那部分还可以.
但是,我有一个很大的问题来保护网址.实际上,我想保护页面以限制对特定角色的访问,就像我通常使用Spring Security一样.
在我的GWT应用程序中,我使用MVP模式和中央应用程序控制器.所以,我只有一个页面,对于那个页面,我将在将#name_of_view添加到URL的末尾时区分视图.例如,要在开发模式下访问我的登录页面,我在浏览器上使用以下URL:
http:// 127.0.0.1:8888/fr.myapp.Application/Application.html?gwt.codesvr=127.0.0.1:9997#login
一旦我正确登录,我将转到以下视图:
http:// 127.0.0.1:8888/fr.myapp.Application/Application.html?gwt.codesvr=127.0.0.1:9997#pagesecured
因此,我不知道如何在Spring Security中配置http标记以及如何定义拦截URL以影响它们以限制访问的特定角色.此外,我认为在开发模式和经典生产模式之间使用这些URL会有问题.不是吗?
那么,有人会有任何想法帮助我使用这些URL配置和保护我的应用程序吗?或者使用其他技术通过表单登录来保护应用程序?
谢谢你的帮助.
西尔万.
您无法在此方案中使用页面级安全性,因为您的视图正在客户端进行更改.
在此类应用程序中实现基于角色的安全性的唯一方法是在服务器端代码中使用方法级安全性.您还可以Application.html
通过创建特殊的非GWT登录页面来限制对未经身份验证的用户的访问(例如,Login.html
).
同意@axtavt - 通常,您不能将页面级安全性与GWT一起使用,因为就Spring安全性而言,它只是一个页面.
你应该做以下事情 -
保护您的RPC URL.如果需要,您可以使用方法级安全性作为axtavt指出.要使用Spring Security连接RPC,请覆盖onAfterRequestDeserialized(RPCRequest)
RPC Servlet中的方法.该RPCRequest
方法详细介绍了要调用的方法以及传递给该方法的实际参数.此信息足以防止一个用户更新另一个用户的记录.
如果RPC服务中存在身份验证或授权错误,请抛出相应的错误并将其发送给客户端.在您的客户端中,创建一个集中的错误处理程序并向用户显示相应的消息.
最后,除了Spring安全性之外,您可能希望保护自己免受XSS和CSRF的侵害.有关其他信息,请参阅GWT应用程序的安全性.