首页 > 代码库 > NancyFx 2.0的开源框架的使用-Authentication
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=http://www.mamicode.com/="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如下图
运行如下图
谢谢观看!
NancyFx 2.0的开源框架的使用-Authentication
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。