【问题标题】:How to manage state between android app and ASP.net Web API?如何管理 android app 和 ASP.net Web API 之间的状态?
【发布时间】:2017-09-02 15:20:48
【问题描述】:

我们有安卓应用,零售商可以通过它为客户手机充值。所以我们需要对每个充值请求进行授权。

要发送充值请求,零售商需要使用充值相关信息以及用户ID和用户密钥访问api。如下

[AcceptVerbs("GET")]
    public IHttpActionResult Prepaid(int pUserID = -1, string pKey = "", string pCustomerNo = "", decimal pAmount = 1, int pServiceProviderId = -1, int pDeviceTypeId = -1)

我们为每个 api 命中比较用户密钥(加密密码)和存储在 db 中的密码来验证用户

这会导致太多的数据库调用,我们的服务器变慢

它的 b2b 应用程序和零售商执行不同类型的操作,例如交易历史记录、信用请求、图书投诉,而不仅仅是充值

用户登录Android应用后如何维护状态

【问题讨论】:

    标签: android c#-4.0 session-cookies session-state


    【解决方案1】:

    嗯,REST 的设计是无状态的。通过添加会话(或任何其他类型),您将使其成为有状态的,并破坏了拥有 RESTful API 的任何目的。

    为了实现身份验证和授权,我使用了以下方法:

    当用户从 android 发出请求时,用户在 http 身份验证标头中发送他的用户 ID 和密码,在服务器端我们检查密码,如果用户被授权,我们处理用户请求。

    由于 api 是无状态的,因此无需在 android 和 web api 之间维护任何状态。

    【讨论】:

    • 不想每次都发送密码怎么办?
    【解决方案2】:

    如果用户密钥是每个用户或每个唯一手机号码的唯一标识,那么我认为最好通过发送 OTP 来验证用户用于充值的手机号码。然后,用户可以将该 OTP 发回以进行身份​​验证。 但仅在登录时执行此操作,然后将您生成的唯一用户密钥存储在Shared preference 存储中。

    【讨论】:

    • 它的 b2b 应用程序不是 b2c。和零售商执行不同类型的操作,例如交易历史记录、信用请求、图书投诉,而不仅仅是充值
    • 您不需要每次都对用户进行身份验证以进行充值或其他任何操作。只需在登录时验证用户身份并将您的“user_key”存储在共享首选项中以供进一步使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 2017-06-09
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    相关资源
    最近更新 更多