Java Android-如何使用身份验证进行MySQL db事务?

Java Android-如何使用身份验证进行MySQL db事务?,java,php,android,mysql,authentication,Java,Php,Android,Mysql,Authentication,对于不需要任何用户名或密码的数据库,我通常通过访问PHP脚本从Android应用程序的MySQL数据库获取数据。为了向数据库发送数据,我向PHP脚本发送GET或POST变量 但是,如果我需要访问一个通常需要web用户首先登录的数据库,我将如何与该数据库交互?在我的Android应用程序中,用户将指定他的登录名和密码 PHP会话? 当通过HTTP请求访问某些web服务器上的PHP脚本时,Android应用程序能否以某种方式使用PHP会话 将登录名/密码作为GET/POST参数发送? 在我的应用程序

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

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

PHP会话?

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

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

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

身份验证令牌?

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

  • 用户向PHP脚本发送登录信息
  • 验证成功后,生成随机令牌并将其放入
    user
    表中
  • 令牌被发送回应用程序
  • 后续数据库调用将令牌作为GET/POST参数包含
  • PHP脚本使用令牌对用户进行身份验证,并获取仅限于该用户的数据库信息
  • 关于这种方法,有两点:

  • 应用程序何时将用户注销?他什么时候退出应用程序?当他切换到另一个应用程序时?活动何时被销毁
  • 如果用户没有手动注销应用程序(通常会从
    用户
    表中清除令牌值),令牌值何时清除
  • 如果用户关闭手机并断开与数据库的连接,会发生什么情况?数据库是否应该在一段时间后自动清除
    user
    表中的令牌值,以便一些随机幸运的人猜不到令牌
  • 令牌是否也应在时间戳设置某种类型的上次访问时间戳,并在一定时间段后拒绝使用令牌进行身份验证

  • 有几十个使用Android应用程序访问MySQL web数据库的教程,但我找不到任何讨论使用凭据和/或身份验证方案的教程。

    请记住,通常使用cookie跟踪会话。你所要做的就是保存cookie,并在从android应用程序发出请求时在标题中使用它,然后你就有了一个工作会话


    也可以考虑做一次特殊的握手或使用某种特殊的安全措施永远不要相信输入

    您是否有任何链接显示在执行httppost或httpget请求后如何存储cookie?还有在后续请求中如何在标题中发送的代码?恐怕没有。我不知道android数据库是如何工作的,但通常可以使用fopen函数或cURL获取或发送标题。