2015-10-20 4 views
5

На Brock Allen's blog, он утверждает, чтоИспользования OnValidateIdentity для выполнения дополнительной проверки на печенье данных

класса CookieAuthenticationOptions имеет свойство Provider ... и он имеет свойство, которые делегируют вы можете подписаться. Это позволяет проверить cookie как это входит в приложение (OnValidateIdentity). В этом обратном вызове вы можете отклонить или заменить идентификатор .

Я новичок в Owin и C#, поэтому я изо всех сил, чтобы приспособить много примеров OnValidateIdentity, которые я нашел в Интернете, чтобы удовлетворить свои потребности. После того, как печенье был принят как действует на каждом «частном» веб-страницы, я хотел бы проверить следующие вещи:

  1. Печенье содержит, по меньшей мере, один иск
  2. Значение претензии CustomerId больше ноль

Я могу выполнить эти две проверки обычным способом, но я не могу понять, как подключить логин к OnValidateIdentity. Вот что я до сих пор:

Я написал код, но не могу понять, что нужно вернуть из используемого метода.

public void Configuration(IAppBuilder app) 
{ 
    dynamic cookieExpirationPeriod = TimeSpan.FromMinutes(60); 

    CookieAuthenticationProvider prov = new CookieAuthenticationProvider(); 
    prov.OnValidateIdentity = ctx => 
    { 
     MyClaimsIdentityObject si = MyApp.Identity.Current(); 
     if (si == null || si.UserId == 0 || si.CustomerId == 0) { 
      ctx.RejectIdentity(); 
      // what needs to happen here for a return value? 
     } 
    }; 


    CookieAuthenticationOptions coa = new CookieAuthenticationOptions { 
     AuthenticationMode = AuthenticationMode.Active, 
     CookieName = "MyApp", 
     ExpireTimeSpan = cookieExpirationPeriod, 
     SlidingExpiration = true, 
     AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
     LoginPath = new PathString("/login.aspx"), 
     CookieHttpOnly = true, 
     Provider = prov 
    }; 

    if (HttpContext.Current.Request.IsLocal) { 
     coa.CookieSecure = CookieSecureOption.Never; 
    } else { 
     coa.CookieSecure = CookieSecureOption.Always; 
    } 

    app.UseCookieAuthentication(coa); 

} 

ответ

3

Я считаю, что это просто:

return Task.FromResult<int>(0); 
+0

Там есть полный пример здесь достигает нечто подобное тому, что мне было нужно: http://stackoverflow.com/questions/25780551/extending-cookieauthenticationprovider- onvalidateidentity – EvilDr

 Смежные вопросы

  • Нет связанных вопросов^_^