我有一个基于App Engine(Java)构建的网站,需要用户使用Google帐户登录。
情况是:
我想也许我可以在向服务器发出更改请求时附加userID参数,服务器端会将当前用户ID与此userID参数进行比较以处理更改请求,或者返回刷新命令以使其超出如果ID不相同,则将日期页面刷新到当前帐户。
处理这种情况的最佳做法是什么?
答案 0 :(得分:1)
在表单上放置一个隐藏字段,它是会话ID和用户ID的组合哈希值。当您的服务器处理请求时,请仔细检查与请求一起发送的组合哈希是否与您期望的一致。如果用户或会话错误,则哈希将不匹配,您可以适当地报告错误。
答案 1 :(得分:1)
据推测,用户将通过作为Cookie信息发送的会话ID来识别。由于登录的不同,站点A上的Adam将具有与站点B上的Adam不同的会话ID。也可能是表单页面将受到保护,以便用户需要登录才能访问它。
当Adam在页面B上注销时,旧会话在服务器上被销毁,登录失效。当Adam从页面A提交表单时,浏览器不知道这已经发生,并且将提交表单和旧的会话ID。由于会话已经过期,服务器将(应该)拒绝此提交。
因此,在正确编码的会话/用户管理系统中,这成为一个无问题。关键点是在注销时更新/无效会话ID。