【问题标题】:Android authentication and sessionsAndroid 身份验证和会话
【发布时间】:2013-04-03 17:40:36
【问题描述】:

如何在 Android 应用中进行身份验证后让用户保持登录状态?我做了一些阅读,坦率地说,我对会话有点缺乏经验,但看起来在用户将他们的凭据提交给服务器并通过身份验证后,服务器会发回一个会话 ID。我认为这个会话 ID 存储在用户的 android 设备上的某个地方。

我应该使用 sharedPreferences、sqlite 数据库还是本地存储来保存会话 ID?我读到共享首选项有点不安全,而 sqlite db 或本地存储将仅限于单个应用程序。

另外,我应该向服务器发出 HTTP 请求以发送/接收此信息,还是可以通过套接字连接完成。最终,我想制作一个使用套接字的多人游戏,尽管我认为某些功能(例如登录)不一定必须通过套接字,但不确定游戏开发人员通常是否有标准或通常的方式来做到这一点。

【问题讨论】:

    标签: android session authentication


    【解决方案1】:

    我是否应该向服务器发出 HTTP 请求以发送/接收此信息

    我不认为您只想通过 HTTP 发送您的身份验证。人们可能会拦截您的包裹并以纯文本形式读回数据。如果您的 android 应用程序在服务器上有一个 API 进行身份验证,我建议您使用 HTTPS 进行通信。

    我应该使用 sharedPreferences、sqlite 数据库还是本地存储来保存会话 ID?

    我自己在“MODE_PRIVATE”中使用 sharedPreferences 来存储 ID。您可以在不同的模式下创建 sharedPreferences 文件。私有模式意味着它只能由您的应用程序或具有相同用户 ID 的应用程序访问。这里解释了所有模式:

    http://developer.android.com/reference/android/content/Context.html#getSharedPreferences%28java.lang.String,%20int%29

    如果您想在您的 android 设备上存储密码和用户,我建议您使用数据库。确保使用“salt and pepper”保护您的密码:

    http://barkingiguana.com/2009/08/03/securing-passwords-with-salt-pepper-and-rainbows/

    不确定游戏开发者通常是否有标准或常用的方法

    无法帮助您解决这个问题,但我认为如果您进行一些研究,您将能够弄清楚;)。

    【讨论】:

    • 感谢您的帮助。 HTTPS 会更有意义,因为它是加密的,我想我的问题更多是我应该发送用户登录信息并通过套接字或 https 使用会话 ID 进行响应。我想只要它是安全的套接字连接,它就可以与套接字一起使用。
    猜你喜欢
    • 2023-03-14
    • 2011-10-09
    • 2017-06-16
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2020-09-29
    相关资源
    最近更新 更多