Bir ASP.Net MVC web sitesinde kaygıların ayrılmasını sağlarken, kayıt düzeyinde yetkilendirmeyi uygulamak için iyi bir yöntem hakkında herhangi bir öneri olan var mı?MVC/ASP.Net Kayıt Düzeyinde Yetkilendirmeye İlişkin En İyi Uygulama
PrincipalPermission(SecurityAction.Demand, Role = "GroupLeader")
o sayfaya herhangi bir ziyaretçi sabit rolü "Groupleader" üyesi olmasını gerektirecek bir: PrincipalPermission ile
, sen bir yöntem dekore edebilirsiniz. bu sayfaya herhangi bir ziyaretçi jenerik bir grup yönetmek için izin verilmesini gerektirecek
[ClaimsPrincipalPermission(SecurityAction.Demand, Operation = "Manage", Resource = "Group")]
:
Alternatif olarak, bir yöntem dekore olabilir. Ancak, bunların hiçbiri, bir kullanıcının bazı grupları düzenleme iznine sahip olduğu ancak başkalarını düzenleme iznine sahip olamayacak senaryolara hitap etmemiştir. Anlatabildiğim kadarıyla, özel bir ClaimsAuthorizationManager
uygulasaysam bile, koşullu yetkilendirmeyi yapmak için yöntem parametrelerine erişmenin bir yolu yoktur. Ayrıca, yukarıdaki yöntemlerden her ikisi de, kullanıcının, ne olduğunu açıklayan ve gerekli yetkileri almak için neler yapabileceklerini açıklayan bir sayfaya yönlendirmek için bir yönteme izin vermek yerine, kullanıcının erişimi yoksa, SecurityException
kodunu attı .
Açıkçası, yetkilendirme mantığını yalnızca yönteme göre kodlayabildiğimi ve buna göre yeniden yönlendirebileceğimin farkındayım, ancak mümkünse bunu ayırmayı tercih ediyorum ve yöntem kodunu yalnızca isteği işlemek için işlemek için temiz tutmayı tercih ediyorum. Daha genel olarak uygulanabilecek bir çerçeve içinde çalışabilmek.
Yani, bu senaryoyu işlemek için bir "kullanıma hazır" yöntem var mı, yoksa özel bir IAuthorizationFilter
mu uygulamalıyım? Hem kayıt düzeyinde yetkilendirmeyi hem de zarif yönlendirmeyi başarabileceğimi düşünüyorum, ancak yöntem düzeyinde herhangi bir parametre olmadan, büyük bir if ... else if
ifadesi olurdu.
Kutunun dışında hiçbir şey yok, ancak bir devasa "eğer başka bir şey yapmanıza gerek yok". Yetkilendirme filtresinde isteğin kendisi var, böylece oradan bir şeyler alabilirsiniz. – Shoe
Gerçekten sorduğunuz soru "İşlemi _this_ nesnesinde yapabilir miyim?" Aslında şu anda bu ile ilgili arama yapıyorum ve henüz iyi bir çözüme rastlamadım. Temel olarak, [İsteğe Bağlı Erişim Denetimleri] (http://en.wikipedia.org/wiki/Discretionary_access_control). Wikipedia bunu açıklıyor, ama henüz bunun için somut bir programlama modeli bulamadım."İsteğe Bağlı Erişim Denetimi" yanıt gibi görünüyor, ancak daha fazla araştırmaya ihtiyacım var çünkü öncelikle sistem kaynaklarına (ör. Bir dosya sistemi veya bilgisayara) odaklanıyor. –