Na Brock Allen's blog, stwierdza on, żeKorzystanie OnValidateIdentity do wykonywania dodatkowej weryfikacji danych ciasteczek
klasa CookieAuthenticationOptions ma właściwość Provider ... i ma właściwości, które są delegaci można subskrybować. Ten numer umożliwia sprawdzenie poprawności pliku cookie, ponieważ wchodzi on w skład aplikacji OnValidateIdentity. W tym oddzwonieniu możesz odrzucić lub zastąpić tożsamość .
Jestem nowy w OWIN i C#, więc staram się dostosować wiele przykładów OnValidateIdentity
, które znalazłem online, aby spełnić moje potrzeby. Po cookie został przyjęty jako ważny na każdym „prywatny” strony, chciałbym, aby sprawdzić następujące rzeczy:
- Cookie zawiera co najmniej jedno roszczenie
- Wartość roszczenia CustomerId jest większa niż zero
Mogę osiągnąć te dwie kontrole w normalny sposób, ale nie mogę wymyślić, jak podłączyć logowanie do OnValidateIdentity
. Oto, co mam do tej pory:
Napisałem trochę kodu, ale nie mogę określić, co należy zwrócić z zastosowanej metody.
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);
}
Jest pełny przykład tutaj, że osiąga coś podobnego do tego, co potrzebne: http://stackoverflow.com/questions/25780551/extending-cookieauthenticationprovider- Nieprawidłowa identyfikacja – EvilDr