zoukankan      html  css  js  c++  java
  • nancy中的Stateless验证

    这里的代码都是源项目中的代码,示例项目sample文件夹下的代码,或者test文件夹下的代码。

    nancy中的Stateless验证的实现 ,示例中的方法要比token简单容易看的多。不像token中的FileSystemTokenKeyStore方式,用文件保存,每次全部读取,实现也麻烦。

    StatelessAuthBootstrapper 是sample中的用来演示用的自定义代码,实现了DefaultNancyBootstrapper。

                       var apiKey = (string) nancyContext.Request.Query.ApiKey.Value;

                          //get the user identity however you choose to (for now, using a static class/method)
                          return UserDatabase.GetUserFromApiKey(apiKey);

    每次获取apikey 然后获取用户信息。

    现在转到UserDatabase的类,

    static readonly List<Tuple<string, string>> ActiveApiKeys = new List<Tuple<string, string>>();
          private static readonly List<Tuple<string, string>> Users = new List<Tuple<string, string>>();

    定义了2个list,Users代表我们的数据库的用户表,保存用户的信息等。

    ActiveApiKeys 用来保存登陆后的apikey等,类似早期的保存的session的库,只不过早期通常是服务器进程自动维护。这里我们可以用memcache,或者redis来代替。

    在ValidateUser的方法中,有这么一句  var apiKey = Guid.NewGuid().ToString();  用来产生apikey。  一般guid足够了,当然你也可以把它进行加密,就会更加碰撞不到了。

    DemoUserIdentity 的属性比较少,可以自己添加角色等要用来验证的必要信息。

    ActiveApiKeys  也可以用自己的方式来验证,反正Tuple可以加7个参数的内容,下面是token方式验证中的Tokenizer类,里面包含的部分字段。 我们也可以这样去做,

    例如加入apikey的过期时间,验证时可以直接设置apikey过期。

    加入刷新apikey时间,在apikey过期的时候,例如30秒内,可以用旧的的apikey交换新的apikey。类似taobao的刷新token。

    private Encoding encoding = Encoding.UTF8;
           private string claimsDelimiter = "|";
           private string hashDelimiter = ":";
           private string itemDelimiter = Environment.NewLine;
           private Func<DateTime> tokenStamp = () => DateTime.UtcNow;
           private Func<DateTime> now = () => DateTime.UtcNow;
           private Func<TimeSpan> tokenExpiration = () => TimeSpan.FromDays(1);
           private Func<TimeSpan> keyExpiration = () => TimeSpan.FromDays(7);

  • 相关阅读:
    L05 Laravel 教程 电商实战
    laravel 5.5 登录验证码 captcha 引入
    thinkphp 清理runtime缓存的方法, 清理指定目录
    艾伟也谈项目管理,项目经理要如何看待技术? 狼人:
    艾伟也谈项目管理,带领团队发挥最大潜能的10个技巧 狼人:
    艾伟也谈项目管理,聊聊我们团队的绩效管理 狼人:
    艾伟也谈项目管理,创建敏捷团队 狼人:
    艾伟也谈项目管理,多任务让你走得更慢 狼人:
    艾伟也谈项目管理,项目经理的思维批判 狼人:
    艾伟也谈项目管理,创业公司技术选型参考 狼人:
  • 原文地址:https://www.cnblogs.com/wang2650/p/4833774.html
Copyright © 2011-2022 走看看