ASP.NET MVC kullanma Bazı özel yetkilendirme mantığına dikkat çekmek için özel bir Yetkilendirme özniteliği oluşturuyorum. Çok sayıda örneğe baktım ve bu oldukça basit bir şekilde ileri sürülüyor ama sorum, hangi yöntemin geçersiz kılınması gerektiğidir, AuthorizeCore veya OnAuthorization? Birini diğerini geçersiz kılan birçok örnek gördüm. Bir fark var mı?AuthorizeAttribute geçersiz kılma AuthorizeCore veya OnAuthorization
cevap
ipucu dönüş türlerinde geçerli:
AuthorizeCore
bir boolean döndüren - bu karar kod yapıyor. Bu Temelde soruya cevap gerektiğini onlar vb vb vardır roller kullanıcının kimliğini ve test bakarak sınırlı olmalıdır:
Do I want this user to proceed?
O "tarafında" herhangi bir ek faaliyetleri gerçekleştirmek gerekir.
OnAuthorize
void değerini döndürür - bu noktada gerçekleşmesi gereken herhangi bir işlevselliği koyarsınız. Örneğin. Bir kütüğe yazın, oturum vb. Bazı verileri depolayın.
kaynak kodu –
Maalesef AuthorizeCore değil bilgiler için teşekkür ederiz İhtiyacım olan AuthorizationContext'i (RouteData'ya erişmek ve buna dayalı kararlar vermek için) içerdiğinden, gördüğüm tek yaklaşım OnAuthorize kullanıyor. – gw0
Neden "AuthorizationContext", "AuthorizeCore" alanına geçti? Bu büyük bir kusur gibi görünüyor. – Jez
Kullanıcının ilk kez yetkilendirilmiş olup olmadığına veya AuthorizeCore
numaralı telefondan önbelleğe alınmış bir yetkilendirmeye sahip olup olmadığına bakılmaksızın çalışması gereken herhangi bir kodu girmelisiniz.
Kaynak koduna bakarsanız, AuthorizeCore
öğesinin hem OnAuthorize
hem de OnCacheAuthorization
tarafından çağrıldığını görebilirsiniz. Bu, yetkilendirmenin önbelleğe alınmasına izin verir ancak yine de belirli eylemlere izin verir ve yetkilendirme ile ilgili gerçek kararları verir.
AuthorizationContext'ten bir şeye ihtiyacınız varsa, bilgiyi saklamak için bir özellik oluşturabilir ve ardından AuthorizeCore yöntemine erişebilirsiniz.
Cevabınızın son tümcesini vurgulamak isterdim . Onu gerçekten cesaretlendirmelisin. Kabul edilen cevapta @ gw0'un yorumuna atıfta bulunarak, gerçekten talihsiz olan şey, yanlış nedenden ötürü yanlış yere kullanma önerisinin reddedilmesidir. –
AuthorizeAttribute (MSDN) belgelerinin açıkça (iş parçacığı güvenliği) _ "İş parçacığı üyeleri iş parçacığı güvenli olduğu garanti edilmez." _ Bu nedenle, bir mülkte bilgi tutmanın bir seçenek olmadığını düşünüyorum. – bvgheluwe
@BartVG - Takip ettiğimden emin değilim. İplik güvenliği bu tartışma ile ne yapmak zorundadır? Tüm bu metin, çok iş parçacıklı bir şekilde kullanılacaksa, nesnelere erişimi senkronize etmeniz gerektiği anlamına gelir. –
- 1. geçersiz kılma AuthorizeCore Nedense
- 2. MVC 4 geçersiz kılma AuthorizeAttribute çalışmıyor
- 3. == geçersiz kılma == geçersiz kılma
- 4. AsyncTask SınıfındaPostExecute() yöntemini geçersiz kılma veya tetikleme
- 5. geçersiz kılma klon klonlanamaz
- 6. UserManager'ı django'ya geçersiz kılma
- 7. Java'da Sabitleri Geçersiz Kılma
- 8. geçersiz kılma özelliği getters
- 9. ToggleButton Stili Geçersiz Kılma
- 10. "Soyut geçersiz kılma" neden subtraitda "geçersiz kılma" gerektirmiyor?
- 11. Geçersiz kılma log4j.properties
- 12. Javascript: XMLHttpRequest.open'i geçersiz kılma()
- 13. geçersiz kılma temsilci özelliği
- 14. Bootstrap CSS'yi geçersiz kılma
- 15. geçersiz kılma yöntemi
- 16. Ruby'de geçersiz kılma == işleci
- 17. Form verilerini geçersiz kılma
- 18. Geçersiz kılma CRL önbelleği
- 19. Hata: == geçersiz kılma
- 20. AccessTokenExpireTimeSpan'ı geçersiz kılma
- 21. RxJava Observable.cache geçersiz kılma
- 22. Joomla makalesini geçersiz kılma
- 23. AppConfig.ready geçersiz kılma()
- 24. Hazırda bekletme geçersiz kılma @transient
- 25. Omurganın ayrıştırma işlevini geçersiz kılma
- 26. İletki Testindeki Sabitleri Geçersiz Kılma
- 27. İlk olarak AuthorizeAttribute
- 28. Özel bir AuthorizeAttribute sınıfının içinde RedirectToAction() kullanmak mümkün mü?
- 29. Omurgada getirme yöntemini geçersiz kılma
- 30. UIPickerView'de vurgulanan seçimi geçersiz kılma
Ödeme MVC4, http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/e0115a823029#src%2fSystem.Web.Mvc%2fAuthorizeAttribute.cs – user1736525