예제 #1
0
        /// <summary>
        /// Pipeline for a web api request
        /// </summary>
        /// <param name="container"></param>
        /// <param name="pipelines"></param>
        /// <param name="context"></param>
        protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context)
        {
            base.RequestStartup(container, pipelines, context);
            //CORS
            pipelines.AfterRequest.AddItemToEndOfPipeline((ctx) =>
            {
                ctx.Response.WithHeader("Access-Control-Allow-Origin", "*")
                .WithHeader("Access-Control-Allow-Methods", "POST,GET,DELETE,PUT,OPTIONS")
                .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type");
            });

            //Custom error handling
            pipelines.OnError.AddItemToEndOfPipeline((ctx, exc) =>
            {
                return(StatusCodeHandler.GetStatusCode(ctx, exc));
            });

            //Authenticathion
            var owinEnvironment = context.GetOwinEnvironment();
            var principal       = owinEnvironment?["server.User"] as ClaimsPrincipal;

            if (principal == null)
            {
                return;
            }
            //context.CurrentUser = principal;
        }
예제 #2
0
 private static void SetUpTrackingCodes()
 {
     // Add error codes for tracking
     StatusCodeHandler.AddCode(404);
     StatusCodeHandler.AddCode(500);
 }