2014-06-04 3 views
1

Я создал простой веб-сервис - WebAPI 2 с помощью Owin, размещенного на IIS в моем файле запускаWebAPI 2 - OAuth 2 перехвата авторизации токена

public void Configuration(IAppBuilder app) 
    { 
     // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888 
     ConfigureOAuth(app); 
     var configuration = new HttpConfiguration(); 
     WebApiConfig.Register(configuration); 
     app.UseWebApi(configuration); 
     app.UseCors(CorsOptions.AllowAll); 
    } 

    public void ConfigureOAuth(IAppBuilder app) 
    { 
     var oAuthServerOptions = new OAuthAuthorizationServerOptions() 
     { 
      AllowInsecureHttp = true, 
      TokenEndpointPath = new PathString("/token"), 
      AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), 
      Provider = new SimpleAuthorizationServerProvider() 
     }; 

     // Token Generation 
     app.UseOAuthAuthorizationServer(oAuthServerOptions); 
     app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 

    } 

и создал простой контроллер с атрибутом Авторизоваться. в идентификационной модели я добавляю информацию, которую я хочу читать, когда пользователь совершает вызов сервера

var identity = new ClaimsIdentity(context.Options.AuthenticationType); 
     identity.AddClaim(new Claim("sub", context.UserName)); 
     identity.AddClaim(new Claim("role", "user")); 
     identity.AddClaim(new Claim("session", "50")); 

на каждый запрос я хочу, чтобы получить значение сеанса, есть способ сделать это? как я могу добавить промежуточное программное обеспечение для перехвата процесса авторизации токена?

+0

возможно дубликат [Доступ к сеансу с помощью ASP.NET Web API] (http://stackoverflow.com/questions/9594229/accessing-session -при-Asp-сетчатая веб-апи) – Tascalator

ответ

3

Вы можете попробовать что-то подобное в действии контроллера:

IPrincipal x = ControllerContext.RequestContext.Principal; 
ClaimsIdentity ci = x.Identity as ClaimsIdentity; 
string session = ci.FindFirst("session").Value;