GWT实现管理控制台的最佳方式

时间:2013-01-04 13:19:59

标签: java security gwt web-applications web

我正在创建一个GWT应用程序,并希望添加一个管理控制台。

我的第一次尝试是创建一个管理窗口(窗口小部件),然后在管理员登录时显示它。

这种方法的问题在于每个访问我页面的用户都会下载负责显示和操作管理控制台的javascript - 出于性能和安全原因,我不喜欢这个想法。

由于管理控制台只是我应用程序中的“窗口” - 我希望只有当用户以管理员身份登录并在他退出时“清除”它时才下载它。

使用GWT实现该目标的可用选项是什么?

3 个答案:

答案 0 :(得分:1)

跟进Ajax的解决方案,了解更多细节&选项:

  • 您的管理模块是在不同战争中部署的另一个Java项目,例如admin.war。
  • 您的Admin java项目继承自您的主项目,因此您拥有所有常用功能+管理功能。
  • 您可以从admin.war网络应用程序访问管理模块javascript,例如index.html。
  • 您的admin.war Web应用程序只能通过ssl隧道后面的本地主机访问。这样,只有那些有私钥访问您服务器的管理员用户才能在成功打开隧道后访问您的管理模块,没有其他人。此选项非常安全 - 您可以控制谁有权访问,并且在此之上,所有通信都是加密的。但是,只有当您的管理员用户很少通过服务器授权的公钥来严格控制这些选项时,此选项才适用。否则,我想你必须通过密码和代码分割来诉诸上述认证机制。

答案 1 :(得分:-1)

使用自己的管理控制台活动创建单独的视图。您可以使用Activities and Places design pattern

此外,您可以使用code-splitting确保只有管理员加载管理控制台所需的代码。

编辑:

在您的入口点类中,您应该检查用户是否经过身份验证并且是否为admin,允许或不允许访问您应用的这一部分。您也应该在服务器端执行相同的操作。当用户注销时,请关闭该应用。

答案 2 :(得分:-1)

代码拆分是将管理员资料从面向客户端的JS中移出的快速解决方案;但是,任何熟悉w / gwt的人都知道如何访问未下载的代码拆分。

真正安全的选择是运行第二个入口点并仅为管理员编译。这样,您的服务器就可以避免提供任何触及管理功能的内容。

将所有管理功能放入主编译中不允许的包中也是明智之举;这样,你永远不会泄漏不安全的资源。