我遇到了this在线文档,从那里有关于GWT离线身份验证的幻灯片:
在线时,身份验证由服务器完成。
因此,我们将用户的密码存储在浏览器中,盐渍和 用SHA-3加密。
在项目中找到Java SHA-3实现,复制粘贴:
String shaEncoded = SHA3.digest(String clearString);
使用GWT 18的离线HTML5应用程序
问题是:
答案 0 :(得分:0)
离线验证没有特殊情况。它与在线工作方式相同。
您的客户端浏览器中通常会有一个包含会话信息的Cookie,用于通过服务器对客户端进行身份验证(当您提出请求时)。 只要会话信息在后端持久存在,您就可以重新验证用户身份。
您不得在客户端存储密码。它足以在客户端(在Cookie或LocalStorage中)存储一些会话信息,并使用它来验证用户。
答案 1 :(得分:0)
实际上,您并未将密码本身存储在浏览器中,而是存储在SHA-3哈希中。 从加密角度来看,这种方法非常安全,因为检索原始密码并不容易。
请注意: 您的代码将存储在客户端,客户端上的每个源代码都可能被篡改。因此,恶意用户也可能能够阅读和利用它。 但是不要担心,对于离线可用应用程序的普通用例,这是足够安全的。
我会为长时间运行的服务器会话做些什么: 在服务器端生成随机ID,将其与用户关联并将其存储在数据库中。 将ID设置为客户端上的cookie,并在用户未登录时重新对用户进行身份验证,并且仍然在cookie中具有此ID。 要限制在服务器端添加超时值的时间,之后将丢弃ID。