bu hiç yardımcı olur, ama bu aynı şey koştu ve en azından benim amaçlar için, ben hiç AuthorizeCore geçersiz kılmak gerek yoktu, belirledi emin değilim. Dürüst olmak gerekirse neden orada olduğundan emin değilim. MSDN'in dediği gibi OnAuthorization "bir süreç yetkilendirme istediğinde" çağrılır. Bu, AuthorizeWithRoles özniteliğinize sahip herhangi bir yöntem için çağrılacağı anlamına gelir. Kullanıcı iznine sahip olup olmadığını kontrol etmek için OnAuthorization içinde özel kodunuzu koyabilirsiniz ve filterContext gelen HttpContext alabilirsiniz beri AuthorizeCore gerek orada gerçekten. İşte benim için çalışan basit bir örnek:
public class LoginRequired : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (Common.ValidateCurrentSession(filterContext.HttpContext))
{
//this is valid; keep going
return;
}
else
{
//this is not valid; redirect
filterContext.Result = new RedirectResult("/login");
}
}
}
Umarım yardımcı olur. Bunun yanı sıra, belli ki OnAuthorization geçersiz kılma olduğunu beyan gerekir.
DÜZENLEME: Baz OnAuthorization yöntemi AuthorizeCore içine dediği olduğuna inanıyoruz. Yetkilendirmeyi geçersiz kıldığınızdan, açık ki bu çağrı kaybolur. Ben yalnız OnAuthorization bırakılırsa AuthorizeCore sadece ilgili olacağını geçersiz kılma veya inanmak geçersiz kılınmış yöntemi içinde base.OnAuthorization (filterContext) denilen eğer.
-1 Sen OnAuthorization', bir güvenlik sorunu sunuyoruz 'geçersiz kılmak gerekiyor. Cevabımı gör. – Stijn