这个安装时很简单的 只要 Install-Package Nancy.Hosting.Aspnet 就行了。

需要注意的是,千万不要用那个模板安装,通过创建nancyfx类型项目的方式安装是有问题的。原因是那个是很老的东西,装上后,用的是0.23版本的dll,而且配置文件(wenconfig)也不一样。  创建的项目,不要选网站类型,尽量选择c#类库项目,项目图标有绿色小球那种。

安装完成后,也可以安装其他的插件,比如Install-Package Nancy.Authentication.Stateless等,这里也是提醒下,看下插件的日期,尽量选择新版本的,2年前的插件未必在新的版本中能用。

Code Snippet
  1. <configuration>
  2. <configSections>
  3. <sectionname="nancyFx"type="Nancy.Hosting.Aspnet.NancyFxSection" />
  4. </configSections>
  5. <nancyFx>
  6. <!-- We can override the bootstrapper inside the config if we don't want to rely on the bootstrapper locator. -->
  7. <bootstrapperassembly="lxl"type="lxl.StatelessAuthBootstrapper" />
  8. </nancyFx>
  9. <system.web>
  10. <compilationdebug="true"targetFramework="4.0" />
  11. <httpRuntime />
  12. <httpHandlers>
  13. <addverb="*"type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler"path="*" />
  14. </httpHandlers>
  15. </system.web>
  16. <system.webServer>
  17. <validationvalidateIntegratedModeConfiguration="false" />
  18. <modulesrunAllManagedModulesForAllRequests="true" />
  19. <httpErrorsexistingResponse="PassThrough" />
  20. <handlers>
  21. <addname="Nancy"verb="*"type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler"path="*" />
  22. </handlers>
  23. </system.webServer>
  24. </configuration>

webconfig的配置类似上面

<bootstrapper assembly="lxl" type="lxl.StatelessAuthBootstrapper" />  表示默认加载的启动器。配置里可以没有,不是必须的。

<httpErrors existingResponse="PassThrough" />  这个需要注意下,这是处理http错误的方式,如果有这个配置,那么会用nancy自己的方法处理错误,默认返回的是状态码。

如果不加这个,那么会使用原始的错误处理方式。下面看个示例

public SecureModule()
       {
           this.RequiresAuthentication();

在你的module中加入验证,如果是用PassThrough这个配置,没有验证的情况下返回的是一个401的空白错误页。  去掉PassThrough,看到的是系统的错误页,或者要求你登陆的窗口。

从这里看出来,RequiresAuthentication失败,默认做网站级别的未登陆处理,而不是我们平时以为的业务级别的验证。

下面是验证是否的方法,是通过判断用户名来判断的。

public static bool IsAuthenticated(this IUserIdentity user)
       {
           return
               user != null
               && !String.IsNullOrWhiteSpace(user.UserName);
       }

再看看module是怎么验证的

Code Snippet
  1. public SecureModule()
  2. {
  3. this.RequiresAuthentication();
  4. Get["secure"] = x =>
  5. {
  6. //Context.CurrentUser was set by StatelessAuthentication earlier in the pipeline
  7. var identity = (DemoUserIdentity)this.Context.CurrentUser;
  8. //return the secure information in a json response
  9. var userModel = newUserModel(identity.UserName);
  10. returnthis.Response.AsJson(new
  11. {
  12. SecureContent = "here's some secure content that you can only see if you provide a correct apiKey",
  13. User = userModel
  14. });
  15. };
  16. }

首先看看用户是否登陆,这个this.RequiresAuthentication();可以加到最外面 ,就是对module验证。也可放到 Get["secure"] = x =>这个action里面,那么就是对action验证。

var identity = (DemoUserIdentity)this.Context.CurrentUser; 是获取用户的登陆信息,是可以自定义的。可以从token cookie等方式获取。

然后通过判断identity 的属性 比如角色id之类的进行业务逻辑的验证。

标记: nancy,net

nancyfx的安装笔记的更多相关文章

  1. MonoDevelop 4.2.2/Mono 3.4.0 in CentOS 6.5 安装笔记

    MonoDevelop 4.2.2/Mono 3.4.0 in CentOS 6.5 安装笔记 说明 以root账户登录Linux操作系统,注意:本文中的所有命令行前面的 #> 表示命令行提示符 ...

  2. 基于Ubuntu14.04系统的nvidia tesla K40驱动和cuda 7.5安装笔记

    基于Ubuntu14.04系统的nvidia tesla K40驱动和cuda 7.5安装笔记 飞翔的蜘蛛人 注1:本人新手,文章中不准确的地方,欢迎批评指正 注2:知识储备应达到Linux入门级水平 ...

  3. sublime 安装笔记

    sublime 安装笔记 下载地址 安装package control 根据版本复制相应的代码到console,运行 按要求重启几次后再按crtl+shift+p打开命令窗口 输入pcip即可开始安装 ...

  4. docker在ubuntu14.04下的安装笔记

    本文主要是参考官网教程进行ubuntu14.04的安装. 下面是我的安装笔记. 笔记原件完整下载: 链接: https://pan.baidu.com/s/1dEPQ8mP 密码: gq2p

  5. ArchLinux 安装笔记:续 --zz

    续前话 在虚拟机里调试了几天,终于鼓起勇气往实体机安装了,到桌面环境为止的安装过程可以看我的前一篇文章<ArchLinux 安装笔记>.桌面环境我使用的是 GNOME,虽然用了很长一段时间 ...

  6. Hadoop1.x与2.x安装笔记

    Hadoop1.x与2.x安装笔记 Email: chujiaqiang229@163.com 2015-05-09 Hadoop 1.x 安装 Hadoop1.x 集群规划 No 名称 内容 备注 ...

  7. PHP7安装笔记

    PHP7安装笔记 时间 -- :: 喵了个咪 原文 http://www.hdj.me/php7-install-note 主题 PHP # 安装mcrypt yum install -y php-m ...

  8. python 库安装笔记

    python 库安装笔记 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-2-22 友情提示 安装python库的过程中 ...

  9. 开始使用gentoo linux——gentoo安装笔记(下)

    gentoo安装笔记(下) 上一章,已经对操作系统安装做了充分准备,并且已经从livecd(u盘系统)切换进入了gentoo安装环境中. 不过现在才是真正的开始!打起精神!这可不是在装ubuntu! ...

随机推荐

  1. Java 将字符串转换为字符数组 toCharArray()

    Java 手册 toCharArray public char[] toCharArray() 将此字符串转换为一个新的字符数组. 返回: 一个新分配的字符数组,它的长度是此字符串的长度,它的内容被初 ...

  2. Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股

      第一讲:人工智能概述       第三讲:Tensorflow框架         前向传播: 反向传播: 总的代码: #coding:utf-8 #1.导入模块,生成模拟数据集 import t ...

  3. Bootstrap-CL:面包屑导航

    ylbtech-Bootstrap-CL:面包屑导航 1.返回顶部 1. Bootstrap 面包屑导航(Breadcrumbs) 面包屑导航(Breadcrumbs)是一种基于网站层次信息的显示方式 ...

  4. 学习笔记之C++ Primer中文版(第五版)

    非常权威系统的语言书,正好学习下C++11内容. C++ Primer_百度百科 http://baike.baidu.com/link?url=YLvDJE9w3CjGp3eQwjuXYKUZs7v ...

  5. 通过BeanFactoryPostProcessor来获取bean

    一.现在我们很多时候都在spring的容器中,进行bean的提取和操作,但是配置里面首先需要扫描相应的包来实现相关bean的注入 但是问题来了.如果我们在另外一个线程需要用的时候,并且没有配置扫描该类 ...

  6. httpclient跳过https请求的验证

    一.因为在使用https发送请求的时候会涉及,验证方式.但是这种方式在使用的时候很不方便.特别是在请求外部接口的时候,所以这我写了一个跳过验证的方式.(供参考) 二.加入包,这里用的是commons- ...

  7. mysql修复表

    数据库Table xxx is marked as crashed and should be repaired错误的解决方法服务器断电等原因可能导致数据表损坏,导致访问的时候提示:Table xxx ...

  8. Java并发编程-Thread类的使用

    在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态.上下文切换,然后接着 ...

  9. 20165233 实验二 Java面向对象程序设计

    20165233 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...

  10. oracle忘记sys及system密码

    一.忘记除SYS.SYSTEM用户之外的用户的登录密码. 用SYS (或SYSTEM)用户登录. CONN SYS/PASS_WORD AS SYSDBA; 使用如下语句修改用户的密码. ALTER ...