/// <summary> /// 使用OSession,ORole,ORouter中间件. /// </summary> /// <param name="appBuilder"><see cref="IAppBuilder"/></param> /// <param name="options">OTransitServerOptions</param> /// <returns><see cref="IAppBuilder"/></returns> static public IAppBuilder UseTransitServer(this IAppBuilder appBuilder, OTransitServerOptions options) { if (options.EnableOSessionMiddleware) { appBuilder.Use <OSessionMiddleware>(options.OSessionMiddlewareOptions); } if (options.EnableORoleMiddleware) { appBuilder.Use <ORoleMiddleware>(options.ORoleMiddlewareOptions); } if (options.EnableORouterMiddleware) { appBuilder.Use <ORouterMiddleware>(options.ORouterMiddlewareOptions); } return(appBuilder); }
/// <summary> /// 使用OSession,ORole,ORouter中间件. /// </summary> /// <param name="appBuilder"><see cref="IAppBuilder"/></param> /// <param name="fileName">应用方法所在的程序集全名</param> /// <param name="options">OTransitServerOptions</param> /// <returns></returns> static public IAppBuilder UseTransitServer(this IAppBuilder appBuilder, string fileName = null, OTransitServerOptions options = null) => appBuilder.UseTransitServer(options ?? new OTransitServerOptions(fileName));
static private void Configuration(IAppBuilder appBuilder) { var options = new OTransitServerOptions("./OLiOSoft.OWINKatana.OSessionRoleRouter.ConsoleTests.exe"); options.ORoleMiddlewareOptions.FillORoleContextAsYouLike = (orole) => { var oseesions = orole.HttpContext.GetOSessionContext(); var account = (dynamic)oseesions.Get("account") ?? new { Name = "未登录的游客", Role = Role.@default }; orole.Name = account.Name; orole.Role = account.Role; oseesions.AddOrUpdate("account", account); }; options.ORouterMiddlewareOptions.Index = (orouter) => { Console.WriteLine( $"\n" + $"请求:{orouter.HttpContext.Request.Path.Value}\n" + $"名称:{orouter.HttpContext.GetORoleContext().Name}\n" + $"角色:{orouter.HttpContext.GetORoleContext().Role.ToString()}\n" + $"授权状态:{orouter.HttpContext.GetORoleContext().IsAuthorized}\n" + "invoked by lambda named Index" ); orouter.RequestPath = "/index"; }; options.ORouterMiddlewareOptions.Forbidden = (orouter) => { Console.WriteLine( $"\n" + $"请求:{orouter.HttpContext.Request.Path.Value}\n" + $"名称:{orouter.HttpContext.GetORoleContext().Name}\n" + $"角色:{orouter.HttpContext.GetORoleContext().Role.ToString()}\n" + $"授权状态:{orouter.HttpContext.GetORoleContext().IsAuthorized}\n" + "invoked by lambda named Forbidden" ); orouter.RequestPath = "/forbidden"; }; options.ORouterMiddlewareOptions.NoPermission = (orouter) => { Console.WriteLine( $"\n" + $"请求:{orouter.HttpContext.Request.Path.Value}\n" + $"名称:{orouter.HttpContext.GetORoleContext().Name}\n" + $"角色:{orouter.HttpContext.GetORoleContext().Role.ToString()}\n" + $"授权状态:{orouter.HttpContext.GetORoleContext().IsAuthorized}\n" + "invoked by lambda named NoPermission" ); orouter.RequestPath = "/nopermission"; }; options.ORouterMiddlewareOptions.NotFound = (orouter) => { Console.WriteLine( $"\n" + $"请求:{orouter.HttpContext.Request.Path.Value}\n" + $"名称:{orouter.HttpContext.GetORoleContext().Name}\n" + $"角色:{orouter.HttpContext.GetORoleContext().Role.ToString()}\n" + $"授权状态:{orouter.HttpContext.GetORoleContext().IsAuthorized}\n" + "invoked by lambda named NotFound" ); orouter.RequestPath = "/notfound"; }; options.ORouterMiddlewareOptions.NotLogin = (orouter) => { Console.WriteLine( $"\n" + $"请求:{orouter.HttpContext.Request.Path.Value}\n" + $"名称:{orouter.HttpContext.GetORoleContext().Name}\n" + $"角色:{orouter.HttpContext.GetORoleContext().Role.ToString()}\n" + $"授权状态:{orouter.HttpContext.GetORoleContext().IsAuthorized}\n" + "invoked by lambda named NotLogin" ); orouter.RequestPath = "/login"; }; var phyfs = new PhysicalFileSystem(""); var fs1 = new FileServerOptions { EnableDefaultFiles = true, EnableDirectoryBrowsing = false, FileSystem = phyfs, RequestPath = new PathString("") }; var fs1_1 = new FileServerOptions { EnableDefaultFiles = true, EnableDirectoryBrowsing = false, FileSystem = phyfs, RequestPath = new PathString("/index") }; var fs2 = new FileServerOptions { EnableDefaultFiles = true, EnableDirectoryBrowsing = false, FileSystem = phyfs, RequestPath = new PathString("/login") }; var fs3 = new FileServerOptions { EnableDefaultFiles = true, EnableDirectoryBrowsing = false, FileSystem = phyfs, RequestPath = new PathString("/notfound") }; var fs4 = new FileServerOptions { EnableDefaultFiles = true, EnableDirectoryBrowsing = false, FileSystem = phyfs, RequestPath = new PathString("/nopermission") }; var fs5 = new FileServerOptions { EnableDefaultFiles = true, EnableDirectoryBrowsing = false, FileSystem = phyfs, RequestPath = new PathString("/forbidden") }; var fs6 = new FileServerOptions { EnableDefaultFiles = true, EnableDirectoryBrowsing = false, FileSystem = phyfs, RequestPath = new PathString("/pageone") }; var fs7 = new FileServerOptions { EnableDefaultFiles = true, EnableDirectoryBrowsing = false, FileSystem = phyfs, RequestPath = new PathString("/pagetwo") }; fs1.DefaultFilesOptions.DefaultFileNames = new List <string> { "_index.html" }; fs1_1.DefaultFilesOptions.DefaultFileNames = new List <string> { "_index.html" }; fs2.DefaultFilesOptions.DefaultFileNames = new List <string> { "_login.html" }; fs3.DefaultFilesOptions.DefaultFileNames = new List <string> { "_notfound.html" }; fs4.DefaultFilesOptions.DefaultFileNames = new List <string> { "_nopermission.html" }; fs5.DefaultFilesOptions.DefaultFileNames = new List <string> { "_forbidden.html" }; fs6.DefaultFilesOptions.DefaultFileNames = new List <string> { "pageone.html" }; fs7.DefaultFilesOptions.DefaultFileNames = new List <string> { "pagetwo.html" }; appBuilder.UseFileServer(fs1); appBuilder.UseFileServer(fs2); appBuilder.UseFileServer(fs3); appBuilder.UseFileServer(fs4); appBuilder.UseFileServer(fs5); appBuilder.UseTransitServer(options); appBuilder.UseFileServer(fs6); appBuilder.UseFileServer(fs7); }