Aracılığıyla paylaş


Forms Kimlik Doğrulaması ile Kullanıcıların Kimliğini Doğrulama (VB)

Microsoft tarafından

MVC uygulamanızdaki belirli sayfaları parolayla korumak için [Authorize] özniteliğini kullanmayı öğrenin. Kullanıcıları ve rolleri oluşturmak ve yönetmek için Web Sitesi Yönetim Aracı'nı kullanmayı öğrenirsiniz. Ayrıca kullanıcı hesabının ve rol bilgilerinin depolandığı yeri yapılandırmayı da öğrenirsiniz.

Bu öğreticinin amacı, ASP.NET MVC uygulamalarınızdaki görünümleri parolayla korumak için Forms kimlik doğrulamasını nasıl kullanabileceğinizi açıklamaktır. Kullanıcı ve rol oluşturmak için Web Sitesi Yönetim Aracı'nı kullanmayı öğrenirsiniz. Ayrıca yetkisiz kullanıcıların denetleyici eylemlerini çağırmasını önlemeyi de öğrenirsiniz. Son olarak, kullanıcı adlarının ve parolaların depolandığı yeri yapılandırmayı öğreneceksiniz.

Web Sitesi Yönetim Aracı'nı kullanma

Başka bir şey yapmadan önce, bazı kullanıcılar ve roller oluşturarak başlamalıyız. Yeni kullanıcılar ve roller oluşturmanın en kolay yolu, Visual Studio 2008 Web Sitesi Yönetim Aracı'nın avantajlarından yararlanmaktır. Bu aracı Başlatmak için Project ASP.NET Yapılandırma menü seçeneğini belirleyebilirsiniz. Alternatif olarak, Çözüm Gezgini penceresinin en üstünde görünen çekicin (biraz korkutucu) simgesine tıklayarak Web Sitesi Yönetim Aracı'nı başlatabilirsiniz (bkz. Şekil 1).

Şekil 1 – Web Sitesi Yönetim Aracı'nı başlatma

clip_image002[4]

Web Sitesi Yönetim Aracı'nın içinde Güvenlik sekmesini seçerek yeni kullanıcılar ve roller oluşturursunuz. Stephen adlı yeni bir kullanıcı oluşturmak için Kullanıcı oluştur bağlantısına tıklayın (bkz. Şekil 2). Stephen kullanıcınıza istediğiniz herhangi bir parolayı (örneğin, gizli dizi) sağlayın.

Şekil 2 – Yeni kullanıcı oluşturma

clip_image004[4]

Önce rolleri etkinleştirerek ve bir veya daha fazla rol tanımlayarak yeni roller oluşturursunuz. Rolleri etkinleştir bağlantısına tıklayarak rolleri etkinleştirin. Ardından, Rol oluştur veya yönet bağlantısına tıklayarak Yöneticiler adlı bir rol oluşturun (bkz. Şekil 3).

Şekil 3 – Yeni rol oluşturma

clip_image006[4]

Son olarak, Sally adlı yeni bir kullanıcı oluşturun ve Kullanıcı Oluştur bağlantısına tıklayıp Sally'yi oluştururken Yöneticiler'i seçerek Sally'yi Yöneticiler rolüyle ilişkilendirin (bkz. Şekil 4).

Şekil 4 – Role kullanıcı ekleme

clip_image008[4]

Her şey söylenip bittiğinde Stephen ve Sally adında iki yeni kullanıcınız olmalıdır. Yöneticiler adlı yeni bir rolünüz de olmalıdır. Sally, Administrators rolünün bir üyesi ve Stephen değil.

Yetkilendirme Gerektirme

Eyleme [Authorize] özniteliğini ekleyerek kullanıcının denetleyici eylemini çağırmadan önce kimliğinin doğrulanması gerekebilir. [Authorize] özniteliğini tek bir denetleyici eylemine veya bu özniteliği tüm denetleyici sınıfına uygulayabilirsiniz.

Örneğin, Liste 1'deki denetleyici CompanySecrets() adlı bir eylemi kullanıma sunar. Bu eylem [Authorize] özniteliğiyle donatıldığı için, kullanıcının kimliği doğrulanmadığı sürece bu eylem çağrılamaz.

Listeleme 1 – Controllers\HomeController.vb

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return View()
    End Function

    <Authorize()> _
    Function CompanySecrets()
        Return View()
    End Function

End Class

Tarayıcınızın adres çubuğuna /Home/CompanySecrets URL'sini girerek CompanySecrets() eylemini çağırırsanız ve kimliği doğrulanmış bir kullanıcı değilseniz otomatik olarak Oturum Açma görünümüne yönlendirilirsiniz (bkz. Şekil 5).

Şekil 5 – Oturum Açma görünümü

clip_image010[4]

Kullanıcı adınızı ve parolanızı girmek için Oturum Açma görünümünü kullanabilirsiniz. Kayıtlı bir kullanıcı değilseniz Kayıt görünümüne gitmek için kayıt bağlantısına tıklayabilirsiniz (bkz. Şekil 6). Yeni bir kullanıcı hesabı oluşturmak için Kaydet görünümünü kullanabilirsiniz.

Şekil 6 – Kayıt görünümü

clip_image012

Başarıyla oturum açtıktan sonra CompanySecrets görünümünü görebilirsiniz (bkz. Şekil 7). Varsayılan olarak, tarayıcı pencerenizi kapatana kadar oturumunuz açık kalır.

Şekil 7 – CompanySecrets görünümü

clip_image014

Kullanıcı Adına veya Kullanıcı Rolüne Göre Yetkilendirme

Bir denetleyici eylemine erişimi belirli bir kullanıcı kümesiyle veya belirli bir kullanıcı rolü kümesiyle kısıtlamak için [Authorize] özniteliğini kullanabilirsiniz. Örneğin, Liste 2'deki değiştirilmiş Giriş denetleyicisi StephenSecrets() ve AdministratorSecrets() adlı iki yeni eylem içerir.

Liste 2 – Controllers\HomeController.vb

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index()
        Return View()
    End Function

    <Authorize()> _
    Function CompanySecrets()
        Return View()
    End Function


    <Authorize(Users:="Stephen")> _
    Function StephenSecrets()
        Return View()
    End Function

    <Authorize(Roles:="Administrators")> _
    Function AdministratorSecrets()
        Return View()
    End Function

End Class

Yalnızca Stephen kullanıcı adına sahip bir kullanıcı StephenSecrets() eylemini çağırabilir. Diğer tüm kullanıcılar Oturum Açma görünümüne yönlendirilir. Users özelliği, kullanıcı hesabı adlarının virgülle ayrılmış bir listesini kabul eder.

Yalnızca Yöneticiler rolündeki kullanıcılar AdministratorSecrets() eylemini çağırabilir. Örneğin, Sally Yöneticiler grubunun bir üyesi olduğundan AdministratorSecrets() eylemini çağırabilir. Diğer tüm kullanıcılar Oturum Açma görünümüne yönlendirilir. Roles özelliği, rol adlarının virgülle ayrılmış listesini kabul eder.

Kimlik Doğrulamasını Yapılandırma

Bu noktada, kullanıcı hesabı ve rol bilgilerinin nerede depolandığını merak ediyor olabilirsiniz. Varsayılan olarak, bilgiler MVC uygulamanızın App_Data klasöründe bulunan ASPNETDB.mdf adlı bir (RANU) SQL Express veritabanında depolanır. Bu veritabanı, üyeliği kullanmaya başladığınızda ASP.NET çerçevesi tarafından otomatik olarak oluşturulur.

Çözüm Gezgini penceresinde ASPNETDB.mdf veritabanını görmek için önce Proje, Tüm Dosyaları Göster menü seçeneğini belirlemeniz gerekir.

Bir uygulama geliştirirken varsayılan SQL Express veritabanını kullanmak normaldir. Ancak büyük olasılıkla bir üretim uygulaması için varsayılan ASPNETDB.mdf veritabanını kullanmak istemezsiniz. Bu durumda, aşağıdaki iki adımı tamamlayarak kullanıcı hesabı bilgilerinin depolandığı yeri değiştirebilirsiniz:

  1. Application Services veritabanı nesnelerini üretim veritabanınıza ekleme - Uygulama bağlantı dizenizi üretim veritabanınıza işaret eden şekilde değiştirin

İlk adım, gerekli tüm veritabanı nesnelerini (tablolar ve saklı yordamlar) üretim veritabanınıza eklemektir. Bu nesneleri yeni bir veritabanına eklemenin en kolay yolu, ASP.NET SQL Server Kurulum Sihirbazı'nı kullanmaktır (bkz. Şekil 8). Microsoft Visual Studio 2008 program grubundan Visual Studio 2008 Komut İstemi'ni açıp komut isteminden aşağıdaki komutu yürüterek bu aracı başlatabilirsiniz:

aspnet_regsql

Şekil 8 – ASP.NET SQL Server Kurulum Sihirbazı

clip_image016

ASP.NET SQL Server Kurulum Sihirbazı, ağınızda bir SQL Server veritabanı seçmenize ve ASP.NET uygulama hizmetleri için gereken tüm veritabanı nesnelerini yüklemenize olanak tanır. Veritabanı sunucusunun yerel makinenizde bulunması gerekmez.

Not

ASP.NET SQL Server Kurulum Sihirbazı'nı kullanmak istemiyorsanız, uygulama hizmetleri veritabanı nesnelerini eklemek için SQL betiklerini aşağıdaki klasörde bulabilirsiniz:

C:\Windows\Microsoft.NET\Framework\v2.0.50727

Gerekli veritabanı nesnelerini oluşturduktan sonra, MVC uygulamanız tarafından kullanılan veritabanı bağlantısını değiştirmeniz gerekir. Web yapılandırma (web.config) dosyanızdaki ApplicationServices bağlantı dizesini üretim veritabanına işaret eden şekilde değiştirin. Örneğin, Liste 3'teki değiştirilen bağlantı MyProductionDB adlı bir veritabanına işaret eder (özgün ApplicationServices bağlantı dizesi açıklama satırı yapılmıştır).

Liste 3 – Web.config

<connectionStrings>

<!--<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>-->

<add name="ApplicationServices" connectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=MyProductionDB" />

</connectionStrings>

Veritabanı İzinlerini Yapılandırma

Veritabanınıza bağlanmak için Tümleşik Güvenlik kullanıyorsanız veritabanınıza oturum açma bilgisi olarak doğru Windows kullanıcı hesabını eklemeniz gerekir. Doğru hesap, web sunucunuz olarak ASP.NET Geliştirme Sunucusu'nu mu yoksa Internet Information Services'i mi kullandığınıza bağlıdır. Doğru kullanıcı hesabı, işletim sisteminize de bağlıdır.

ASP.NET Geliştirme Sunucusu'nu (Visual Studio tarafından kullanılan varsayılan web sunucusu) kullanıyorsanız uygulamanız Windows kullanıcı hesabınız bağlamında yürütülür. Bu durumda, Windows kullanıcı hesabınızı veritabanı sunucusu oturum açma adı olarak eklemeniz gerekir.

Alternatif olarak, Internet Information Services kullanıyorsanız ASPNET hesabını veya NT AUTHORITY/NETWORK SERVICE hesabını veritabanı sunucusu oturum açma bilgileri olarak eklemeniz gerekir. Windows XP kullanıyorsanız ASPNET hesabını veritabanınıza oturum açma bilgisi olarak ekleyin. Windows Vista veya Windows Server 2008 gibi daha yeni bir işletim sistemi kullanıyorsanız, nt AUTHORITY/NETWORK SERVICE hesabını veritabanı oturum açma adı olarak ekleyin.

Microsoft SQL Server Management Studio kullanarak veritabanınıza yeni bir kullanıcı hesabı ekleyebilirsiniz (bkz. Şekil 9).

Şekil 9 – Yeni bir Microsoft SQL Server oturumu oluşturma

clip_image018

Gerekli oturum açma bilgilerini oluşturduktan sonra, oturum açma bilgilerini doğru veritabanı rollerine sahip bir veritabanı kullanıcısıyla eşlemeniz gerekir. Oturum açma bilgilerine çift tıklayın ve Kullanıcı Eşlemesi sekmesini seçin. Bir veya daha fazla uygulama hizmeti veritabanı rolü seçin. Örneğin, kullanıcıların kimliğini doğrulamak için aspnet_Membership_BasicAccess veritabanı rolünü etkinleştirmeniz gerekir. Yeni kullanıcılar oluşturmak için aspnet_Membership_FullAccess veritabanı rolünü etkinleştirmeniz gerekir (bkz. Şekil 10).

Şekil 10 – Uygulama Hizmetleri veritabanı rolleri ekleme

clip_image020

Özet

Bu öğreticide, ASP.NET MVC uygulaması oluştururken Forms kimlik doğrulamasını kullanmayı öğrendiniz. İlk olarak, Web Sitesi Yönetim Aracı'nı kullanarak yeni kullanıcılar ve roller oluşturmayı öğrendinsiniz. Ardından, yetkisiz kullanıcıların denetleyici eylemlerini çağırmasını önlemek için [Authorize] özniteliğini kullanmayı öğrendiniz. Son olarak, kullanıcı ve rol bilgilerini bir üretim veritabanında depolamak için MVC uygulamanızı yapılandırmayı öğrendinsiniz.