Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 15478|Yanıt: 0

[ASP.NET] FormsAuthentication temelli kullanıcı ve rol doğrulama

[Bağlantıyı kopyala]
Yayınlandı 19.07.2018 17:31:14 | | |
Normal koşullarda, erişim hakları yönetimi yaptığımızda, oturumda doğru girişten sonra kullanıcının temel bilgilerini kaydederiz ve gelecekte kullanıcı sayfa veya arayüz verisi istediğinde her kez bunu alırız

Oturum, oturumda oturum açarak giriş yapıp yapamayacağını ve mevcut sayfaya erişip erişemediğini görmek ve karşılaştırmak için.

       Session'ın prensibi, sunucu tarafında depolanmış kullanıcı verilerine karşılık gelen bir SessionID oluşturmaktır ve SessionID bir çerezde saklanır ve istemci her istendiğinde bunu yanında taşır

Cookie ile, sunucu sunucu tarafından saklanan verileri çerezdeki oturum kimliğine göre bulur.

       FormsAuthentication, Microsoft tarafından biz geliştiricilerin kimlik doğrulaması için kullanılması için sağlanmaktadır. Bu kimlik doğrulama sayesinde, kullanıcı adını ve bazı kullanıcı verilerini çerezlerde depolayabiliriz,

Temel kimlik ve rol doğrulama, temel koşul ayarlarıyla kolayca sağlanabilir.

       Burada elde edilecek etki, üyelik kullanmadan sistem tarafından sağlanan Authorize ile rol tabanlı erişim kontrolü uygulanır.

1. Bir Bilet Oluşturun

Kullanıcı giriş yaptıktan sonra, kullanıcının kimliği ve ilgili rolü (birden fazla rol için ayrı olarak) bilette saklanır.

Bileti FormsAuthentication.Encrypt ile şifreleyin.

Şifrelenmiş bileti Response çerezinde saklayabilir (istemci js bu çerezi okumak zorunda değildir, bu yüzden tarayıcı saldırılarının çerezleri çalmasını ve sahte olmasını önlemek için HttpOnly=True ayarlamak en iyisidir). Bu şekilde, bir dahaki sefere Request cookie'den okuyabilirsiniz.

Basit bir demo şöyledir:


bool isPersistent, //devam edip etmeyeceği (gerekirse ayarlanır, eğer persistence olarak ayarlanırsa, çerezin Expires ayarı kurabiye gönderilirken ayarlanmalıdır)

FormsAuthenticationTicket'ın altıncı parametresi, mevcut kullanıcının rol kimliğinin virgülle ayrılmış şekilde saklandığı userData tipi dizisini saklar.

"Test" kullanıcı adıyla giriş yapıldığında, istemci üzerinde bir log çerezi görünür


2. Sertifika bilgisi alın

Giriş yaptıktan sonra, içerik sayfasında, mevcut talebin User.Identity.Name üzerinden uname bilgilerini alabilir veya bilet almak için istekteki çerezi şifresini çözebilir ve ardından uname ile userData'yı (yani daha önce saklanan rol ID bilgilerini) oradan alabiliriz.


3. Açıklama özellikleri aracılığıyla izin erişim kontrolünü gerçekleştirin

Web.config'de Form Doğrulama ve Rol Yönetimini Etkinleştir

Controller ve Action'a açıklama özellikleri eklediğimizde, Role ayarını nereden alıyoruz? Üyelik tabanlı kimlik doğrulama kullanmadığımız için ayrıca özel bir Rol Sağlayıcısı oluşturacağız. Adı CustomRoleProvider'dır ve RoleProvider'den miras alınmıştır. İşte MVCApp'in altındaki Yardımcı klasörde kendi CustomRoleProvider.cs dosyanızın oluşturulması burada.

RoleProvider'da birçok soyut yöntem var ve biz sadece kullanıcı rollerini almak için GetRolesForUser yöntemini uygularız. Buradaki kullanıcı rolü, alınan kullanıcı kimliğine veya oturumda saklanan veya çerezde saklanan kullanıcı adına göre veritabanından sorgulanabilir. Burada rolü biletin userdata'sında zaten kaydettim, o yüzden biletten alalım.

Gerekirse, doğrulanmış Kontrolör veya Eyleme annotasyon özellikleri ekleyin; örneğin, bu Eylem yalnızca 1, 2 veya 3 RoleID ile erişim sağlar ve mevcut kullanıcı RoleID'si (7, 1, 8) olarak kullanılır, bu da kullanıcının erişim hakkı olduğu anlamına gelir.

Not: 1. Bilet, çerez süresi bittiğinde saklanır ve tarayıcı mevcut bileti hatırlamak için kapalıysa, FormsAuthenticationTicket oluşturulduğunda parametreler ayarlanabilir.

2. Role'nin edinimi, biletin userData'sında saklanmadan doğrudan veritabanından okunabilir ve userData diğer bilgileri de depolayabilir.

3. Kontrolör ve Eylem'in İzin Verilen Erişim Rollerini esnek bir şekilde yapılandırmak isterseniz, metodun kullanıldığı AuthorizeAttribute geçersiz kılma bölümünde OnAuthorization yöntemini özelleştirebilirsiniz

      Mevcut sayfada izin verilen rol ID'yi okuyun ve mevcut kullanıcının RoleID'sine göre kontrol edin. Bu şekilde, rolün esnek yapılandırması gerçekleşir.

            4. Biletteki bilgiler nihayetinde çerezde saklanır ve güvenlik yine de kendi iradirinize bağlıdır, şahsen UserID ve RoleID'yi oturumda saklamanın daha iyi olduğunu düşünüyorum.





Önceki:Baidu Haritası: Nokta toplama işaretçisi gecikme çözümünü çözün
Önümüzdeki:Teknik ortakları işe alım
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com