NancyFx 2.0的开源框架的使用-Authentication

新建一个空的项目

新建好了空的项目以后,接着通过NuGet安装一下三个包

  • Nancy
  • Nancy.Hosting.Aspnet
  • Nancy.ViewEnglines.Razor

然后在项目中添加Models,Module,Views三个文件夹,并在Models中添加UserModel类

        public string  Username { get; set; }
        public UserModel(string username)
        {
            this.Username = username;
        }

然后往Module文件夹里面添加MainModule类

 Get("/", Lexan => { return View["index.cshtml"]; });
            Get("/login", Lexan => { return View["login.cshtml",this.Request.Query.returnUrl]; });

再继续添加SecureModule类,AnotherVerySecureModule类

        public SecureModule():base("/secure")
        {
            this.RequiresAuthentication();
            Get("/",Lexan=>
            {
                var model = new UserModel(this.Context.CurrentUser.Identity.Name);
                return View["secure.cshtml",model];
            });
        }

 public AnotherVerySecureModule():base("/superSecure")
        {
            this.RequiresClaims(Lexan=>Lexan.Type==ClaimTypes.Role&&Lexan.Value=="SuperSecure");
            Get("/",Lexan=>
            {
                var model = new UserModel(this.Context.CurrentUser.Identity.Name);
                return View["superSecure.cshtml",model];
            });
        }

根目录添加AuthenticationBootstrapper类

        protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
        {
            base.ApplicationStartup(container, pipelines);
            pipelines.BeforeRequest += ctx =>
              {
                  var username = ctx.Request.Query.username;
                  if (username.HasValue)
                  {
                      ctx.CurrentUser = new ClaimsPrincipal(new ClaimsIdentity(BuildClaims(username), "querystring"));
                  }
                  return null;
              };
            pipelines.AfterRequest += ctx =>
              {
                  if (ctx.Response.StatusCode==HttpStatusCode.Unauthorized)
                  {
                      ctx.Response = new RedirectResponse("/login?retutnUrl="+ Uri.EscapeDataString(ctx.Request.Path));
                  }
              };
        }
        private static IEnumerable<Claim> BuildClaims(string userName)
        {
            var claims = new List<Claim>();
            if (String.Equals(userName,"Lexan",StringComparison.OrdinalIgnoreCase))
            {
                claims.Add(new Claim(ClaimTypes.Role,"SuperSecure"));
            }
            return claims;
        }

继续在Views里添加视图index,login,secure,superSecure

再然后修改一下Web.config如下图

运行如下图

谢谢观看!

时间: 2024-10-18 23:56:33

NancyFx 2.0的开源框架的使用-Authentication的相关文章

NancyFx 2.0的开源框架的使用-Basic

这是NancyFx开源框架中的Basic认证,学习一下! 首先当然是新建一个空的Web,BasicDemo 继续在项目中添加Nuget包,记得安装的Nuget包是最新的预发行版 Nancy Nancy.Authentication.Basic Nancy.Hosting.Aspnet 之后就往项目中添加Models文件夹和Module文件夹,然后往Models文件夹里面添加UserValidator类 public ClaimsPrincipal Validate(string username

NancyFx 2.0的开源框架的使用-ModelBinding(实现绑定)

NancyFx框架中使用绑定模型 新建一个空的Web程序 然后安装Nuget库里面的包 Nancy Nancy.Hosting.Aspnet Nancy.ViewEnglines.Spark 并在Web应用程序里面添加Models,Module,Views三个文件夹 继续往Models文件夹里面添加Database,ModelBinders 然后往Models文件夹里面添加Customer类 public int Id { get; set; } public string Name { get

NancyFx 2.0的开源框架的使用-HosingOwin

Nancy框架的Owin使用 先建一个空的Web项目 然后往Nuget库里面添加Nancy包 Nancy Nancy.Owin Nancy.ViewEnglines.Spark 然后添加Models,Module,Views三个文件夹 往Models文件夹里面添加Index类 public string StatusMessage { get; set; } 然后往Module文件夹里面添加MainModule类 public MainModule() { Get("",Lexan=&

NancyFx 2.0的开源框架的使用-CustomModule(自定义模块)

NancyFx框架的自定义模块 新建一个空的Web项目 然后通过NuGet库安装下面的包 Nancy Nancy.Hosting.Aspnet 然后添加Models,Module,Views三个文件夹,并在Models文件里面添加NancyRouteAttribute类 //路由的方法 public string Method { get; set; } //路由的路径 public string Path { get; set; } public NancyRouteAttribute(str

NancyFx 2.0的开源框架的使用-Stateless(二)

继续上一篇Stateless的博文,在上一篇的博文的基础上稍微加点东西 接下来右键解决方案添加新项目,一样建一个空的Web项目 然后在StatelessDemoWeb项目里面添加Views文件夹,Scripts文件夹,并在Views文件夹里面添加index,login,secure三个页面 在index页面添加如下代码 <body> <div id="loggedIn" style="display:none;"><p>欢迎<

NancyFx 2.0的开源框架的使用-Caching

新建一个空的Web项目,命名CachingDemo 然后添加三个Nuget安装包 Nancy Nancy.Hosting.Aspnet Nancy.ViewsEngines.Razor 然后往项目里面添加Models,Module,Views三个文件夹 再往Models文件夹里面添加CachingExtensions文件夹 然后往CachingExtensions文件夹里面添加ContextExtensions类 public static class ContextExtensions { p

NancyFx 2.0的开源框架的使用-Stateless

同样和前面一样新建一个空的Web项目,都在根目录添加Module,Models,Views文件夹 添加Nuget包 在Models文件夹里面添加UserModel类 public string Username { get; set; } public UserModel(string username) { Username = username; } 在Models文件夹里面添加Userdatabase类 static readonly List<Tuple<string, string&

SunSonic 3.0 ORM开源框架的学习

SubSonic 3.0简介 接触到SubSonic3.0 ORM框架是看了AllEmpty大神的从零开始编写自己的C#框架(链接在此)系列的随笔接触到的,本文章学习内容源于AllEmpty大神. SubSonic就是一个ORM开源框架.作者是Robe Conery,用C#语言写的.其中包含了T4模板可以快速生成数据层实体类,这是一个实用的快速开发框架.让开发人员原理SQL语句的拼接,专注于业务逻辑的实现.SubSonic 3.0支持MsSql.MySql与SQLite三种数据库,对数据库操作灵

花10分钟搞懂开源框架吧 - 【NancyFx.Net】

原文:花10分钟搞懂开源框架吧 - [NancyFx.Net] NancyFx是什么? Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能多的方式,并提供一个super-duper-happy-path所有交互. Nancy 设计用于处理 DELETE, GET, HEAD, OPTIONS, POST, PUT 和 PATCH 等请求方法,并提供简单优雅的 DS