-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBootstrapper.cs
46 lines (41 loc) · 1.58 KB
/
Bootstrapper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using Nancy;
using Nancy.Authentication.Stateless;
using Nancy.Bootstrapper;
using Nancy.Configuration;
using Nancy.TinyIoc;
using System.Security.Claims;
namespace DSM.GatewayEngine
{
public class Bootstrapper : DefaultNancyBootstrapper
{
protected override void RequestStartup(TinyIoCContainer container, IPipelines pipelines, NancyContext context)
{
StatelessAuthenticationConfiguration configuration =
new StatelessAuthenticationConfiguration(nancyContext =>
{
string token = (string)nancyContext.Request.Headers.Authorization;
if (token?.Length < 1) return null;
return Authenticator.SignInWithApiKey(token) as ClaimsPrincipal;
});
ConfigureOrigin(pipelines);
StatelessAuthentication.Enable(pipelines, configuration);
}
public override void Configure(INancyEnvironment environment)
{
environment.Tracing(enabled: false, displayErrorTraces: true);
base.Configure(environment);
}
/// <summary>
/// Allow Origin Access
/// </summary>
/// <param name="pipelines">Request Pipeline</param>
private static void ConfigureOrigin(IPipelines pipelines)
{
pipelines.AfterRequest.AddItemToEndOfPipeline(x =>
{
x.Response.Headers.Add("Access-Control-Allow-Origin", "*");
x.Response.Headers.Add("Access-Control-Allow-Methods", "POST,GET,DELETE,PUT,OPTIONS");
});
}
}
}