Android 在打开的每个应用程序上检查用户名和密码

Android 在打开的每个应用程序上检查用户名和密码,android,Android,我正在构建一个应用程序,用户可以登录到系统。但我对此感到困惑。当用户登录到应用程序时,我将他/她的用户名和密码存储在应用程序数据库中(加密),并且每个应用程序都打开,我将此用户名和密码发送到服务器进行检查。这是一个好方法吗?如果没有,应该怎么做?存储密码,即使是加密的,客户端也不是一个好主意。首先,密码永远不应该被存储,它们应该被腌制和散列并存储结果,因此如果存储被破坏,就不可能获得密码。其次,加密密钥来自哪里?如果它在应用程序中,那么对其进行反向工程和解密就很简单了。这就是为什么不存储它,只需

我正在构建一个应用程序,用户可以登录到系统。但我对此感到困惑。当用户登录到应用程序时,我将他/她的用户名和密码存储在应用程序数据库中(加密),并且每个应用程序都打开,我将此用户名和密码发送到服务器进行检查。这是一个好方法吗?如果没有,应该怎么做?

存储密码,即使是加密的,客户端也不是一个好主意。首先,密码永远不应该被存储,它们应该被腌制和散列并存储结果,因此如果存储被破坏,就不可能获得密码。其次,加密密钥来自哪里?如果它在应用程序中,那么对其进行反向工程和解密就很简单了。这就是为什么不存储它,只需将它发送到服务器一次,然后使用一个访问令牌——有关实现,请参阅OAuth的xaevinx建议

考虑在服务器上实现类似OAuth的东西。然后,您可以在设备上存储令牌,而不是用户凭据。在每个打开的应用程序上,我是否应该向服务器检查令牌?好的,我将使用访问令牌。但是,我是否应该在每个打开的应用程序上检查此令牌?您需要随时确保其为用户。这应该是提供私人信息的随时API调用,在访问任何本地私人信息之前。我知道,但这是一个聊天应用程序,因此用户可以在不提供信息的情况下向其他人发送消息添加“每当进行API调用发送服务器需要信任的数据时”。例如,向服务器发送聊天文本。如果发生这种情况时您没有进行身份验证,那么您将面临相当简单的身份盗窃黑客攻击。除非您降低到套接字级别并保持打开的连接—在这种情况下,您只需要在连接第一次打开时进行身份验证,否则继续连接本身就是您的身份验证。