2016-01-21 40 views
1

我有网页开发的背景,但我对移动世界非常陌生。所以,我不知道如何处理这种情况继续:服务器是否保存移动请求的会话?

  • 在应用
  • 用户的登录凭据通过POST请求发送到服务器。
  • 如果响应正常,它会重定向到主要活动。

现在,我想知道是否必须保留用户的ID。我知道,当我们使用浏览器时,服务器会保存一个“会话”,这样客户端就不需要每次发送ID来请求数据。移动应用(Android)也是如此吗?顺便说一下,我还负责构建REST API,但没有任何针对移动设备的经验。

回答

2

要回答的一个大问题,它取决于并不确定您正在使用哪种服务器技术。但是我可以描述一种我实现的方法(.Net背景)。

看来你正在编写一个移动应用程序?

移动应用程序首先会通过https将身份验证和密码传递给您的登录API。通常情况下,网址会像

// yourwebsite /帐号/令牌

您的API将验证用户时,如果OK,问题的承载令牌。

移动应用程序需要记住此令牌,并在随后的调用中将其传递到请求标头中。这就是服务器如何知道这是谁。您不需要再发送用户标识和密码。而且可能有一个强大的安全性参数,根本不在移动设备上存储用户标识和密码。

现在,您的服务器代码将验证令牌,并且您将知道用户可以执行的操作。令牌通常会过期,因此任何移动客户端都需要检查并重新进行身份验证才能获得新的令牌。

但是服务器如何知道它所属的这个令牌?

在MVC世界中,例如,有框架代码可以帮助您。有很多MVC模板代码。如果您碰巧正在开发.Net api服务,请参阅此http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

如果您在服务器上不是.Net,我确信会有其他东西来帮助您沿着相同的主体。

至于开发RESTful API,ServiceStack是值得考虑的。如果太贵,至少要考虑他们的方法并推出自己的方法(尤其是当涉及到api的版本化时)。

+0

我必须在服务器端使用PHP,但主要的疑问是用令牌解释来回答的。谢谢。 –

2

您误解了浏览器的情况,因此您的结论是有缺陷的。让我解释一下:当您使用网络浏览器登录网站时,确实会保存一个会话,但不仅仅是在服务器上。它也保存在客户端。无论何时您从服务器发送请求到服务器,您都必须发送存储的信息(称为Cookie)来标识您自己。

让我们更深入地思考一下:服务器如何将您的会话标识为会话而无需获取cookie?按IP地址?不,IP地址可以被许多人使用,它可能会改变。通过浏览器会话?是的,通过浏览器会话,其中也包括cookie。

既然您明白会话是由服务器和客户端保存的,那么您肯定已经知道您对移动应用程序也需要相同的功能。客户端登录,因此为客户端生成一个cookie。这应该很难猜测。从那里开始,客户端使用为其创建的cookie使用服务器。

如果你不相信我的话,请访问一个网站,您还没有登录,然后运行console.log(document.cookie);,登录,然后再次运行console.log(document.cookie),然后注销和d再次运行console.log(document.cookie)

+0

是的,我没有意识到浏览器幕后发生的事情,所以我不知道它必须由应用程序执行_manually_。 –

相关问题