【发布时间】:2012-01-21 16:59:19
【问题描述】:
我可以在客户端的哪里存储配置参数?我不可能将参数存储在 Servlet 初始化参数(web.xml)中(因为我必须使用 PHP)。那么如何在客户端存储初始化应用程序参数(例如 PHP 脚本位置、一些密码等)?
【问题讨论】:
标签: java gwt configuration
我可以在客户端的哪里存储配置参数?我不可能将参数存储在 Servlet 初始化参数(web.xml)中(因为我必须使用 PHP)。那么如何在客户端存储初始化应用程序参数(例如 PHP 脚本位置、一些密码等)?
【问题讨论】:
标签: java gwt configuration
为此,您有以下选择:
Configuration 类。我建议你选择第三个选项。
【讨论】:
您可能会很高兴在 GWT 中使用 Dictionary 和 Cookie 类。
在您的 html 托管文件中,您维护一些声明为 var 的 javascript 对象。
在模块加载时,调用 Dictionary 类来获取您定义的用于存储配置数据的 javascript 对象。
通过这种方式,您可以拥有服务器端管理的用户或上下文敏感配置,因为我偶尔会使用 JSP 来生成托管文件。我可以将用户配置管理为存储在数据库中的服务器端 cookie。
所以......今天是星期四......用户有每个星期四访问曼彻斯特联队网站的历史,等等,让我根据上下文/用户敏感算法为用户提供不同的配置。在周一早上,用户配置将包含 10 小时能量饮料的广告数据。
通过这种方式,您的 gwt 客户端不必从服务器请求上下文相关的配置数据。
当然,这不是存储密码等身份验证/安全数据的方法。我认为您甚至不应该考虑将身份验证/安全数据存储在客户端代码中。即使在 javascript 混淆之后,以这种方式存储此类数据也是对恶意意图持久性的公开邀请。如果需要客户端存储,此类数据最好由客户端 cookie 提供,使用 GWT 类 Cookies。
【讨论】:
在客户端存储密码?好的,如果你愿意。只需创建一个包含它们的类,可以是静态字段,也可以是具有所有参数的单例对象。甚至可能是entryPoint() 的那个。
【讨论】:
在客户端存储非常量参数(例如密码或任何用户数据)的标准、简单且简单的方法是 cookie。 见Cookies
您可以存储在硬代码(某些类中的静态字段)或资源 .properties 文件中的常量参数(See GWT i18n constants interface)。
PS:我不建议您在客户端“按原样”存储密码(这不安全),而是您可以存储密码哈希(例如 md5)。只需在服务器端计算密码哈希并将此哈希存储在 cookie 中。
【讨论】:
您可以使用MultiValuedConfigProperties(另请参阅this other helpful tutorial)来存储配置值。使用它们,您可以将配置存储在模块的 .gwt.xml 配置文件中。配置值将被编译到 JavaScript 输出中。
【讨论】: