我有一个默认的GWT + app引擎项目。我们默认获得GWT入口点。
是否可以创建第二个GWT入口点,该入口点仅由受认证保护的html页面加载?
例如,在我的web.xml文件中,我添加了:
<security-constraint>
<web-resource-collection>
<url-pattern>/myprivatestuff/*</url-pattern>
</web-resource-collection>
...
</security-constraint>
和app引擎项目中的war文件夹:
/war/myprivatestuff/index.html
我希望其中的index.html文件加载不同的GWT模块。我不希望第二个'admin'模块的代码能够被'main / default'GWT模块加载。
我担心GWT会将我的所有客户端代码编译成一个单片javascript实体,同时结合通用模块和管理模块,这将是一个安全问题。
是否可以在一个项目中构建两个模块,并将其编译的代码存放在不同的javascript输出中,并且仅在此受保护路径后面加载一个?
由于
答案 0 :(得分:0)
是的,但单独的入口点不会解决您的问题,您需要创建第二个gwt模块(它将拥有自己的HTML页面和入口点以及* .gwt.xml文件)。这样就成了一个完全不同的应用程序,只有当你访问新网址(即新的html页面)时才会下载。
现在在第二个模块的EntryPoint中,您可以对服务器进行RPC调用并检查用户是否已登录,并且在管理员角色中,只有返回响应并转到显示菜单的所有菜单)
如果您想进一步保护页面安全,假设您不想将客户端代码下载到浏览器,除非用户是管理员,您可以执行Code Splitting,因此只有在应用程序身份验证成功且您是转到下一页,编译后的JS只会被转移。
希望它有所帮助。