Xamarin中的离线身份验证最佳做法

内斯特

我打算创建一个Xamarin(.Forms)应用程序,它必须具有身份验证:用户应提供用户名和密码来获取数据。

问题在于它也必须脱机工作(这意味着它不应依赖服务器进行身份验证过程)。

到目前为止,我考虑了以下内容:

  • 将用户名和密码存储在首选项中-未加密,易于重置,易于获取等。
  • 在数据库中存储用户名和密码-可以加密(我想),易于重置

最佳做法是什么?Xamarin是否有内置解决方案?

do

这取决于您的应用程序需求-如果您仅需要验证用户身份以离线访问某些受限数据-我建议您对用户名和密码进行哈希处理,并将其存储在本地设备中(无论在何处进行哈希处理) 。

如果以后需要使用用户名和密码来通过服务器进行身份验证,则应使用安全数据,例如钥匙串,Xamarin具有内置的使用抽象,即Xamarin.Auth,您可以在其中存储凭据安全地。

*注意-在越狱/有根的设备中存储敏感数据是有风险的,请谨慎使用。

编辑-我添加了有关如何使用和使用这些服务的工作代码示例:

1)在您的便携式项目中添加以下界面:

public interface ISecuredDataProvider
{
    void Store(string userId, string providerName, IDictionary<string, string> data);

    void Clear(string providerName);

    Dictionary<string, string> Retreive(string providerName);
}

2)在您的Android项目中,添加以下实现:

public class AndroidSecuredDataProvider : ISecuredDataProvider
{
    public void Store(string userId, string providerName, IDictionary<string, string> data)
    {
        Clear(providerName);
        var accountStore = AccountStore.Create(Android.App.Application.Context);
        var account = new Account(userId, data);
        accountStore.Save(account, providerName);
    }

    public void Clear(string providerName)
    {
        var accountStore = AccountStore.Create(Android.App.Application.Context);
        var accounts = accountStore.FindAccountsForService(providerName);
        foreach (var account in accounts)
        {
            accountStore.Delete(account, providerName);
        }
    }

    public Dictionary<string, string> Retreive(string providerName)
    {
        var accountStore = AccountStore.Create(Android.App.Application.Context);
        var accounts =  accountStore.FindAccountsForService(providerName).FirstOrDefault();

        return (accounts != null) ? accounts.Properties : new Dictionary<string, string>();
    }
}

3)在您的iOS项目中,添加以下实现:

  public class IOSSecuredDataProvider : ISecuredDataProvider
{
    public void Store(string userId, string providerName, IDictionary<string, string> data)
    {
        Clear(providerName);
        var accountStore = AccountStore.Create();
        var account = new Account(userId, data);
        accountStore.Save(account, providerName);
    }

    public void Clear(string providerName)
    {
        var accountStore = AccountStore.Create();
        var accounts = accountStore.FindAccountsForService(providerName);
        foreach (var account in accounts)
        {
            accountStore.Delete(account, providerName);
        }   
    }

    public Dictionary<string, string> Retreive(string providerName)
    {
        var accountStore = AccountStore.Create();
        var accounts = accountStore.FindAccountsForService(providerName).FirstOrDefault();

        return (accounts != null) ? accounts.Properties : new Dictionary<string, string>();
    }
}

4)用法示例-提取Facebook令牌后,我们将其存储为:

securedDataProvider.Store(user.Id, "FacebookAuth", new Dictionary<string, string> { { "FacebookToken", token } });

注意-我添加了两层数据,以便使第一层指示身份验证是否为Facebook / UserName-Password / other。第二层是数据本身-即Facebook令牌/凭据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用户身份验证最佳做法

来自分类Dev

iOS中用户身份验证和会话的最佳做法

来自分类Dev

在移动应用程序中进行帐户注册/注册/身份验证的最佳做法

来自分类Dev

在Android应用程序中进行身份验证和授权的最佳做法

来自分类Dev

Worklight在线+离线身份验证

来自分类Dev

Worklight在线+离线身份验证

来自分类Dev

最佳做法(最适用于Android):使用Facebook或Google登录名对用户进行身份验证

来自分类Dev

Etherpad:进入身份验证的最佳方法

来自分类Dev

Xamarin 身份验证 - Facebook 和 GooglePlus

来自分类Dev

Xamarin 表单多重身份验证

来自分类Dev

在SPA网上商店中实现Web API身份验证的最佳实践

来自分类Dev

laravel中的静态身份验证的最佳解决方案是什么?

来自分类Dev

在NodeJS应用中为远程API存储身份验证令牌的最佳方法是什么?

来自分类Dev

跨多个路由文件在NodeJS中处理CAS身份验证的最佳方法是什么?

来自分类Dev

laravel中的静态身份验证的最佳解决方案是什么?

来自分类Dev

使用魔术链接在 Outlook Office 加载项中对用户进行身份验证的最佳方法

来自分类Dev

处理验证的最佳做法

来自分类Dev

Django验证最佳做法

来自分类Dev

sails.js的最佳身份验证方法是什么?

来自分类Dev

使用Accounts.framework的Facebook最佳身份验证流程

来自分类Dev

Node.JS RESTful API的最佳身份验证方法

来自分类Dev

AngularJS最佳实践应用程序身份验证

来自分类Dev

Node.JS RESTful API的最佳身份验证方法

来自分类Dev

NIS身份验证的最佳替代方法是什么?

来自分类Dev

进行 Laravel 多重身份验证的最佳方法

来自分类Dev

如何通过Xamarin.forms中的Office365 API存储身份验证状态

来自分类Dev

在 Xamarin 表单应用程序中尝试 O365 身份验证

来自分类Dev

Android-Firebase离线最佳做法

来自分类Dev

RestSharp中的OAuth 2.0身份验证

Related 相关文章

  1. 1

    用户身份验证最佳做法

  2. 2

    iOS中用户身份验证和会话的最佳做法

  3. 3

    在移动应用程序中进行帐户注册/注册/身份验证的最佳做法

  4. 4

    在Android应用程序中进行身份验证和授权的最佳做法

  5. 5

    Worklight在线+离线身份验证

  6. 6

    Worklight在线+离线身份验证

  7. 7

    最佳做法(最适用于Android):使用Facebook或Google登录名对用户进行身份验证

  8. 8

    Etherpad:进入身份验证的最佳方法

  9. 9

    Xamarin 身份验证 - Facebook 和 GooglePlus

  10. 10

    Xamarin 表单多重身份验证

  11. 11

    在SPA网上商店中实现Web API身份验证的最佳实践

  12. 12

    laravel中的静态身份验证的最佳解决方案是什么?

  13. 13

    在NodeJS应用中为远程API存储身份验证令牌的最佳方法是什么?

  14. 14

    跨多个路由文件在NodeJS中处理CAS身份验证的最佳方法是什么?

  15. 15

    laravel中的静态身份验证的最佳解决方案是什么?

  16. 16

    使用魔术链接在 Outlook Office 加载项中对用户进行身份验证的最佳方法

  17. 17

    处理验证的最佳做法

  18. 18

    Django验证最佳做法

  19. 19

    sails.js的最佳身份验证方法是什么?

  20. 20

    使用Accounts.framework的Facebook最佳身份验证流程

  21. 21

    Node.JS RESTful API的最佳身份验证方法

  22. 22

    AngularJS最佳实践应用程序身份验证

  23. 23

    Node.JS RESTful API的最佳身份验证方法

  24. 24

    NIS身份验证的最佳替代方法是什么?

  25. 25

    进行 Laravel 多重身份验证的最佳方法

  26. 26

    如何通过Xamarin.forms中的Office365 API存储身份验证状态

  27. 27

    在 Xamarin 表单应用程序中尝试 O365 身份验证

  28. 28

    Android-Firebase离线最佳做法

  29. 29

    RestSharp中的OAuth 2.0身份验证

热门标签

归档