Auf Brock Allen's blog auszuführen, stellt er fest, dassOnValidateIdentity Mit einer zusätzlichen Validierung von Daten Cookie
die CookieAuthenticationOptions Klasse eine Provider-Eigenschaft hat ... und es Eigenschaften hat, die Delegierten Sie abonnieren können. Mit dieser können Sie das Cookie validieren, wie es in der Anwendung (OnValidateIdentity) kommt. In diesem Rückruf können Sie die Identität ablehnen oder ersetzen.
Ich bin neu in OWIN und C#, so habe Schwierigkeiten, die viele Beispiele von OnValidateIdentity
anzupassen, die ich online gefunden habe meine Bedürfnisse anzupassen. Nachdem das Cookie als gültig an jeder ‚privaten‘ Webseite akzeptiert, würde Ich mag für folgende Dinge überprüfen:
- Das Cookie enthält mindestens ein Anspruch
- Der Wert CustomerId Anspruchs größer als Null
ich kann diese beiden Schecks in einem normalen Verfahren erreichen, aber ich kann nicht herausfinden, wie das Login in OnValidateIdentity
einzuhaken. Hier ist, was ich bisher habe:
Ich habe etwas Code geschrieben, kann aber nicht herausfinden, was von der verwendeten Methode zurückgegeben werden muss.
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);
}
Es gibt ein vollständiges Beispiel hier, die eine ähnliche Sache erreicht, was ich brauchte: http://stackoverflow.com/questions/25780551/extending-cookieauthenticationprovider- onvalidatenidentität – EvilDr