MVC de basit bir login işlemi yapmak istiyorum. Web forms ortamında kullanıcı adı ve şifre si uyusan bir kullanıcı varsa sessiona kullanıcı bilgileri doldurulur ve session diğer page ler de kontrol edilir falan. Bunun mvc ortamında geliştirmesi nasıl yapılır. Yapmak istediğim, kullanıcı adı ve şifre ile kullanıcıların giriş yapması. Giriş yapan kullanıcı admin yetkisine sahip ise Admin klasörüne giriş izni olsun ve admin klasörü içerisindeki tüm controllera yetkisi olsun. [Authorize] attr ile karşılaştım ama tam olarak bunun nasıl çalıştığını anlamadım. [Authorize] attr yazılıyor controller ların başına fakat giriş yapan kullanıcının admin olduğunu ben veritabanında tutuyorum. [Authorize] attr benim admin kullanıcımın admin olduğunu nasıl biliyor? Bir yerde bunu setliyor muyum ki?

soruldu: 19 Ağu '14, 02:38

ttrrkk's gravatar image

ttrrkk
71336
cevap kabul oranı: 0%


[Authorize] attr, herhangibir membershipProvider ile çalışır. Microsoft temelde bu işi form authentication ile yapmaktadır. Yani bu [Authorize] attr çalışması için aşağıdaki metodların içi dolu olması gerekiyor.

// kullanıcı giriş yapmış mı?
// bu metod MembershipProvider sınıfı içerisindedir
public override bool ValidateUser(string userName, string password)
{
    // kullanıcıyı db den kontrol et
}

// kullanıcı rol kontrolü bunu User.IsInRole kullanır
public override bool IsUserInRole(string userName, string roleName)
{
    return _roleService.IsUserInRole(userName, roleName);
}

// kullanıcı rol kontrolü bunu [Authorize] attr kullanır
public override string[] GetRolesForUser(string username)
{
        return _roleService.GetRolesByUserName(username).Select(x => x.Name).ToArray<string>();
}

yani [Authorize] attr kullanmak istiyorsanız yukarıdaki metodları implement eden bir provider sınıfı kullanmalısınız. Tabi bir kaç başka ayarda var...

MVC 4 te simpleMembershipProvider kullanıldı, MVC 5 te Identitiy. Her ne kadar isimde değişse, temelde tüm bu membership yapıları MembershipProvider.cs sınıfını kullanmaktadır. Bu yeni yapılarda direk rol yönetimi yoktur. İsterseniz (kesinlikle tavsiyem) kendi provider ınızı kullanabilirsiniz. Boylece her yeni versiyon da nasıl yaparım diye dusunmezsiniz.

Tüm bu geliştirmeler işleri kolaylaştırmak için getirilir, ama kendi sistemimize entegrasyon işleri yüzünden aslında hep işleri zorlaştırır. Kendi provider ınız olursa, form authentication değişmedikçe sizinde yapınız değişmeyecek.

Custom Membership Provider Kod

Custom Role Provider Kod

Custom Membership Makale

Eğer hazır yapıyı kullanmak istiyorsanız da

Identity User & Role Management

permanent link

cevaplandı: 19 Ağu '14, 03:27

AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

AliRıza Adıyahşi ♦
7.9k146288
cevap kabul oranı: 44%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×47

Soruldu: 19 Ağu '14, 02:38

Görüntüleme: 1,750 kez

Son güncelleme: 19 Ağu '14, 03:27

powered by BitNami OSQA