java - Android - 如何使用身份验证进行 MySQL 数据库事务?

标签 java php android mysql authentication

对于不需要任何用户名或密码的数据库,我通常通过访问 PHP 脚本从 Android 应用程序的 MySQL 数据库中获取数据。为了将数据发送到数据库,我将 GET 或 POST 变量发送到 PHP 脚本。

但是,如果我需要访问通常需要 Web 用户首先登录的数据库,我将如何与数据库交互?在我的 Android 应用程序中,用户将指定他的登录名和密码。

PHP session ?

当通过 HTTP 请求访问某些 Web 服务器上的 PHP 脚本时,Android 应用程序能否以某种方式使用 PHP session ?

将登录名/密码作为 GET/POST 参数发送?

在我的应用程序中,访问 PHP 脚本时,每次我想要访问受限数据时是否都会将登录名和密码作为 GET/POST 参数发送?每次都以 GET/POST 方式发送登录名/密码似乎有点粗略。

身份验证 token ?

或者我是否会发送一次登录名/密码进行身份验证,然后检索某种 token ,以便在后续调用 PHP 脚本时发送该 token ?我想象它会像这样工作:

  1. 用户将登录信息发送到 PHP 脚本
  2. 身份验证成功后,会生成随机 token 并将其放置在 user 表中。
  3. token 被发送回应用
  4. 后续数据库调用包含 token 作为 GET/POST 参数。
  5. PHP 脚本使用 token 来验证用户身份并获取仅限该用户的数据库信息。

关于此方法的一些事情:

  1. 应用程序何时注销用户?当他退出应用程序时?当他切换到另一个应用程序时? Activity 什么时候被销毁?
  2. 如果用户没有手动注销应用(通常会从 user 表中清除 token 值),那么 token 值何时会被清除?
  3. 如果用户关闭手机并失去与数据库的连接,会发生什么情况?数据库是否应该在一段时间后自动从 user 表中清除 token 值,以便一些随机的幸运者无法猜测 token ?
  4. token 是否还应该设置某种 last_accessed_at 时间戳并在一段时间后拒绝使用 token 进行身份验证?

有很多关于使用 Android 应用程序访问 MySQL Web 数据库的教程,但我找不到任何讨论使用凭据和/或身份验证方案的教程。

最佳答案

请记住, session 通常是使用 cookie 进行跟踪的。您所要做的就是保存该 cookie 并在从 Android 应用程序发出请求时在 header 中使用它,然后您就可以进行工作 session 了。

还要考虑进行特殊的握手或使用某种特殊的安全措施。 永远不要相信输入!

关于java - Android - 如何使用身份验证进行 MySQL 数据库事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8708045/

相关文章:

java - 空指针访问 : The variable data can only be null at this location

android - 适用于 Android 的 Flex AIR 应用程序可以作为进程运行吗?

java - 如何在没有cygwin的情况下在Windows上以分布式模式运行HBase?

java - 如何为多包类运行MapReduce

PHP 表单发布到远程 FTP 上的 TXT 文件

php - 使用 php 在 mysqli 中遇到错误

android - 在 MapView 中放置图钉

java - 如何在 JLabel 或 JEditorPane 中指定选择

java - libgdx 生成后的临时 Sprite 移动

php - 创建新变量或重新分配旧变量 - php