Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
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
Ö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
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
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ü
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ü
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ü
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:
- 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ı
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
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
Ö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.