在nancy中,身份验证分为basic ,form ,token,stateless几种,basic和form这里不说了,其中如果是使用cookie来保存身份的, 需要注意的是:cookie有大小的限制,所以不能用来保存超过4k的信息,而且有一些js插件也要用的cookie,虽然html5好像多了。但是还是要注意一下。因为之前看到文章有的人网站有时候登陆出现问题,就是因为用户信息太大导致的。

这里说的是token的验证。

ITokenizer

这个是定义token的接口,Tokenizer是它的一个实现,你可以自己实现,比如过期,加密等。

ITokenKeyStore

这是服务器保存登陆用户身份信息的库。 private ITokenKeyStore keyStore = new FileSystemTokenKeyStore(); 这行代码意思是使用文件的方式来保存用户信息。而InMemoryTokenKeyStore 在内存中保存用户信息。你可以使用自己的方式来保存用户的登陆信息,只要实现ITokenKeyStore 。源码中的InMemoryTokenKeyStore 只是测试用的。

过期时间

private Func tokenExpiration = () => TimeSpan.FromDays(1); private Func keyExpiration = () => TimeSpan.FromDays(7); 这是默认的过期时间

身份信息

登陆后,一般会返回一个json格式的信息 其中有token的键值

token的传递

获取到token后,如果你把它保存到cookie,然后发送出去,就和stateless差不多。怎么传递呢?nancy是用在信息头里添加的方式,就是在Header里加入名为Authorization的字段这是测试实例中的代码 with.Header("Authorization", "Token " + token); 用jquery的ajax调用,也可以添加,请自行搜索。看到上面的代码,需要注意的是要在传递token的值前加上字符串"token",我就是直接把token的值传了过去,怎么也不好使。

TokenAuthentication.cs文件中的 var authorization = request.Headers.Authorization;这句就是用来服务器读取authorization信息的。

var apiKey = (string) nancyContext.Request.Query.ApiKey.Value;而stateless是用Request.Query来传递的,apikey是根据guid生成的,貌似没有token复杂

以上都是官网的代码中的方法和方式。

nancy中的身份验证的更多相关文章

  1. 用Retrofit发送请求中添加身份验证

    用Retrofit发送请求中添加身份验证====================在安卓应用开发中, retrofit可以极大的方便发送http网络请求,不管是GET, POST, 还是PUT, DEL ...

  2. Azure Service Bus 中的身份验证方式 Shared Access Signature

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  3. 也谈Asp.net 中的身份验证

    钱李峰 的这篇博文<Asp.net中的认证与授权>已对Asp.net 中的身份验证进行了不错实践.而我这篇博文,是从初学者的角度补充了一些基础的概念,以便能有个清晰的认识. 一.配置安全身 ...

  4. [转]Reporting Services 中的身份验证类型

    本文转自:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/cc281310%28v%3dsql.100%2 ...

  5. SQLServer 中的身份验证及登录问题

    SQLServer 中的身份验证及登录问题 by:授客 QQ:1033553122 身份验证 SQL Server 支持两种身份验证模式,即Windows 身份验证模式和混合模式. Windows 身 ...

  6. nancy中的Stateless验证

    这里的代码都是源项目中的代码,示例项目sample文件夹下的代码,或者test文件夹下的代码. nancy中的Stateless验证的实现 ,示例中的方法要比token简单容易看的多.不像token中 ...

  7. Kubernentes中的身份验证

    Kubernentes中的身份验证 kubernetes 系统的各组件需要使用 TLS 证书对通信进行加密,本文档使用 CloudFlare 的 PKI 工具集 cfssl 来生成 Certifica ...

  8. 从零搭建一个IdentityServer——聊聊Asp.net core中的身份验证与授权

    OpenIDConnect是一个身份验证服务,而Oauth2.0是一个授权框架,在前面几篇文章里通过IdentityServer4实现了基于Oauth2.0的客户端证书(Client_Credenti ...

  9. 学学dotnet core中的身份验证和授权-1-概念

    前言 身份验证: Authentication 授权: Authorization net core 中的身份验证和授权这两个部分,是相辅相成的.当初我在学在部分的时候,是看的 net core 官网 ...

随机推荐

  1. [Android] 开发第六天

    Android 布局介绍 LinearLayout 线性布局 RelativeLayout 相对布局 TableLayout 表格布局 FrameLayout 帧布局 ConstraintLayout ...

  2. postman-1版本区别、选择

    postman基于乙醇在腾讯课堂的postman教程 postman特点: 1.便于开发:开发接口的时候需要快速的调用接口,以便调试 2.便于测试:测试的时候需要非常方便的调用接口,通过不同的参数去测 ...

  3. 实现PPT在线预览,PPT转图片方案

    一.PPT转图片可行方案探索历程 PPT转图片方案 方案具体步骤及分析 已放弃方案 poi(失真度太高):Aspose直接转图片(收费,效果较好,备选):微软Office Online(需要基于Win ...

  4. WPF TabControl控件-事件相关问题

    TabControl控件的TabItem的Content元素,例如:DataGrid控件,在对事件的处理时,需要对事件的源引起关注,当需要处理DataGrid的事件时,事件会传递到TabControl ...

  5. layui 弹框

      <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&q ...

  6. Git----分支管理01

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没有啥影响,不过,在某个时间点,两个平行宇宙合 ...

  7. Oracle数据库备份与恢复命令

    备份:exp  用户名/密码@实例 file="e:\databack\XX_%date%.dmp" log = "e:\databack\XX8_%date%log.t ...

  8. jQuery deferred.resolve() 方法

    jQuery deferred.resolve() 方法 deferred.resolve() 函数用于解决Deferred(延迟)对象,并根据给定的args参数调用任何 doneCallbacks ...

  9. 怎么查看在centos中创建的用户组

    用户列表文件:/etc/passwd 用户组列表文件:/etc/group 查看系统中有哪些用户:cut -d : -f 1 /etc/passwd 查看可以登录系统的用户:cat /etc/pass ...

  10. 【334】Python Object-Oriented Programming

    Reference: Python中self用法详解 __init__ 方法: 私有变量. Reference: [290]Python 函数 class 里面的 function 创建与此一致,只是 ...