Microsoft Asp.Net Identity - Oluşturulan Kullanıcıyı Bir Role Ekleme

Microsoft Asp.Net Identity Nedir?

Asp.Net web sitelerinde ve web uygulamalarında kullanıcı yönetimini sağlayan framework'ün adıdır. 2013 yılına kadar bu amaçla Membership sistemi kullanılmışken, artık Identity kullanılmaktadır.

Visual Studio programında bir Web Forms Site oluşturduğumuzda, kullanıcı yönetim sistemi otomatikman oluşturulacaktır. Bu amaçla Identity frameworkü projeye/siteye dahil edilmiş olacaktır.

Bu sistem sayesinde kullanıcı girişi (authentication), kullanıcı yetkilendirme (authorization) gibi işlemleri kolayca gerçekleştirebiliriz.

Oluşturduğumuz web forms site içerisindeki Account klasöründe, kullanıcı işlemlerinin gerçekleştirilebileceği hazır sayfaları görebiliriz. Örneğin register.aspx sayfası yeni kullanıcı oluşturmak için kullanılan sayfadır.

Kullanıcı bilgilerinin saklanabilmesi için mutlaka bir veritabanına ihtiyaç vardır ve bu veritabanı App_Data klasörü içerisinde saklanacaktır. Ancak sitemizi ilk oluşturduğumuzda bu klasörün boş olduğunu göreceksiniz.

Siteyi test amaçlı çalıştırıp, ilk kullanıcı kaydını yaptığımız anda veritabanı ve gerekli tablolar oluşturulacaktır. 

İlk üye kaydının ardından Çözüm Gezgini panelinden App_Data klasörünü yenilediğimizde veritabanının oluşturulduğunu görebiliriz. Bu veritabanı Sql Server üzerinde çalışan bir veritabanıdır.

Oluşturulan veritabanı içinde 6 adet tablo bulunmaktadır.

  • _MigrationHistory: log amaçlı bir tablo
  • AspNetRoles: Sistemdeki rollerin saklandığı tablo, her rolün bir adı bir de Id'si buraya kaydedilir.
  • AspNetUserClaims: Kullanıcılarla ilgili farklı oturum bilgilerinin tutulduğu tablo
  • AspNetUserLogins: Kullanıcı girişi yapmak için Facebook vb providerler kullanılacaksa bunlarla ilgili bağlantıları tutan tablo
  • AspNetUserRoles: Kullanıcılar ile rollerin eşlendiği tablo. Bir kullanıcı, bir role eklendiyse bu tabloda kullanıcı id'si ile rol id'si kayıt edilecektir.
  • AspNetUsers: Kullanıcı adı, parola vb bilgileri tutan tablo

Oluşturduğumuz web sitesinin şu anki halinde, kullanıcı giriş (login) çıkış (logout) işlemleri, kayıt olma (register) işlemleri ve şifre değiştirme (manage) işlemleri yapılabilir durumdadır.

Sistemde tanımlı bir rol yoktur ve oluşturulan kullanıcılar herhangi bir role eklenmemektedir. Rol yönetimi sağlayabilmek için önce rolleri tanımlamamız gerekmektedir.

Identity Sistemine Rol Tanımlama

Rol tanımlama işlemi kod tarafında yapılabileceği gibi veritabanına el ile eklenerek de yapılabilir:

App_Data klasörü içindeki veritabanına çift tıklayın.

Tablolar kategorisini genişletin.

AspNetRoles tablosuna sağ tıklayarak "Tablo Verilerini Göster" komutuna tıklayın.

Tablo içeriği karşınıza gelecektir. Bu tabloya bir kayıt ekleyerek rol adı (Name) ve rol id'si (Id) belirleyin. Kullanıcıları role eklerken buraya yazdığımız rol id'sini kullanacağız.

Rolleri kullanacağımıza göre mantıken en az iki role ihtiyacımız var demektir. Örneğin bir standart bir de yonetici rolü oluşturabiliriz.

Bu tabloya planladığımız rolleri ekleyerek rollerimizi kullanılabilir hale getirmiş olduk.

Sıra geldi kullanıcıların rollerini belirlemeye.

Yeni Oluşturulan Kullanıcıyı Bir Role Ekleme

Kullanıcı kayıt işlemi Register.aspx sayfasında yapılmaktadır. Bu sayfanın .cs kodlarına bir satır ekleyerek oluşturulan her kullanıcının örneğin standart rolüne eklenmesini sağlayalım:

public partial class Account_Register : Page
{
    protected void CreateUser_Click(object sender, EventArgs e)
    {
        var manager = new UserManager();
        var user = new ApplicationUser() { UserName = UserName.Text };
        IdentityResult result = manager.Create(user, Password.Text);
       
        if (result.Succeeded)
        {
            manager.AddToRole(user.Id, "standart"); /*üye olma işlemi başarılı olursa, o üyeyi standart rolüne ekler.*/
            IdentityHelper.SignIn(manager, user, isPersistent: false);
            IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
        }
        else
        {
            ErrorMessage.Text = result.Errors.FirstOrDefault();
        }
    }
}

Yukarıda manager.AddToRole(user.Id, "standart"); satırı, o an oluşturulan kullanıcının standart isimli role eklenmesini sağlayacaktır.

Kullanıcıların rollerini veritabanı üzerinden el ile değiştirmek istersek, AspNetUserRoles tablosunda gerekli değişiklikleri yapabiliriz. İstenilen kullanıcıların id'si ile rol id'si bu tabloya eklenerek veya ekliyse değiştirilerek kullanıcı rolleri direk veritabanı üzerinden belirlenebilir.

Tabi bu işlemleri kod yazarak bir web sayfası üzerinden gerçekleştirmek daha kullanışlı olacaktır.

Microsoft Asp.Net Identity, Oluşturulan Kullanıcıyı Bir Role Ekleme, kullanıcı ve rol işlemleri, asp.net identity kod ile kullanıcıyı role ekleme, kullanıcı rollerini değiştirme, user roles, addtorole method, addtorole metodu

KONU İLE İLGİLİ ÖRNEKLER

Bu konu ile ilgili örnek bulunmamaktadır.



YORUMLAR




12641  kez okundu.

Online Kullanıcı Sayısı 322



Microsoft-Asp-Net-Identity-Yeni-Kullanıcıyı-Bir-Role-Ekleme