5

Yaklaşık 8 ay önce this question gönderdim. Kabul edilen cevap, varsayılan hizmet sağlayıcının kuralları tarafından oynatılamayan bazı şeylere dokunur. Örneğin, RoleProvider'dan gelen özel bir RoleProvider kullanmıyorsanız, User.IsInRole() gibi hızlı kısayollar kullanma yeteneğini kaybedersiniz. Cevap, "yerleşik sıhhi tesisat" gibi şeylere atıfta bulunur.Varsayılan üyelik sağlayıcısını veya bunu devralan özel bir kişiyi kullanmanın altında yatan olumlu nedenler nelerdir?

Bilmek istediğim şey, bu "yerleşik sıhhi tesisat" a dayanan bir malzemenin tam listesini bulabilir ve sahnelerin arkasına hangi yöntemleri kullandığını gösteren bir şeydir. Örneğin

, HttpContext.Current.User.IsInRole() (ı varsayalım), atıfta ve benim özel RoleProvider benim overriden "IsUserInRole()" yöntemini çağırarak, ama açıkça HttpContext.Current.User.IsInRole() aslında IsUserInRole() aradığını belirtilmektedir belgelere görmek istiyorum edilir tüm sağlayıcılar için tüm bu yöntemler için.

Zaten aniden açık olması gerektiğini anlıyorum (IsInRole() ve IsUserInRole() çok benzer), ama sormak benim motivasyonum, bu tür diğer kısayollar hakkında bilgi edinmek ve öğrenmek. farkında bile değil. Tekerleği birkaç kez yeniden icat ettiğime dair bir fikrim var ve bunu bile bilmiyorum.

cevap

0

Bunlar gerçekten aynı değildir, ancak kullandığınız rol sağlayıcısı, geçerli kullanıcının rol koleksiyonunu, sağlayıcının tüm rollerini içerecek şekilde büyük olasılıkla doldurur. http://msdn.microsoft.com/en-us/library/system.security.principal.aspx

Bu (tabii ASP.NET dahil) .NET uygulamasında Kimlik için bir .NET kuralıdır:

HttpContext.Current.User hakkında burada okuyabilen bir IPrincipal olduğunu. Kullandığınız IPrincipal uygulamasının RoleProvider'ınızın aynı işlevini çağırdığından emin olmanızın tek yolu, sağlayıcınızla birlikte gelen olanı kullanmaktır.

Rol sağlayıcıları, httpApplication nesnesi başına (http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx) başlatılır ve bir Ana uygulama tarafından kullanılmak üzere kullanılabilir. Bu MSDN makalenin Açıklamalar bölümünde

Görünüş: http://msdn.microsoft.com/en-us/library/bb340078.aspx rol sağlayıcının IsUserInRole çağrılması Principal IsInRole tarafından tamamen sizin Principal sağlayıcının uygulanmasına bağlıdır.