我正在为Android应用程序设计自定义会话管理方案。我没有使用任何开箱即用的解决方案,并希望它尽可能简单。这是我现在的设计,作为一系列动作:
用户将登录凭据发送给服务器,服务器对用户进行身份验证。
服务器通过某种机制生成会话ID,该机制涉及加密安全的随机生成的字符串,散列和可能的时间戳。出于这个问题的目的,假设它是不可取的。
服务器在会话表中添加与步骤2中生成的会话ID相对应的新条目。会话表只有一列,即会话ID。
服务器发送响应。在此响应中,服务器添加一个Set-Cookie标头,其名称为" sessionID"或其他任何值,其值是步骤2中生成的会话ID。
客户端(即Android应用程序)将收到的会话ID存储在其SharedPreferences中(此方案中没有非持久会话)。
当用户尝试执行要求他登录的操作时,服务器会读取" sessionID"的值。在客户端请求标头中发送的cookie,并检查此cookie的值是否在sessions表中。如果是,则服务器允许该操作。
此外,所有流量都通过HTTPS发送。
这是我需要做的一切吗?我错过了什么吗?特别是,我应该将会话ID中的用户ID和会话ID存储在一起吗?我不知道为什么我需要,正如this answer似乎暗示的那样,尽管这个答案似乎暗示只有在您拥有超出身份验证的授权时才需要这样做。