Web.config dosyasında güvenlik ayarlarını yapılandırma
Bu bölüm, eklemek ve <authentication>değiştirmek gösterilmiştir ve <authorization> ASP.NET uygulaması, form tabanlı kimlik doğrulamasını kullanacak biçimde yapılandırmak için yapılandırma bölümü.
Solution Explorer'da Web.config dosyasını açın.
Kimlik doğrulama modu form olarak değiştirin.
<forms>Etiketi eklemek ve uygun özniteliklerini doldurun. (Bu öznitelikleri hakkında daha fazla bilgi için MSDN için başvuru belgelerine veya listelenen QuickStart belgelereREFERENCES bölümünde.) Aşağıdaki kodu kopyalayın ve HTML olarak Yapıştır kodu içinde <authentication>yapıştırmak için Düzen menüsünden i dosyanın bir bölümünü:
Depo kullanıcı ayrıntıları için örnek bir veritabanı tablosu oluştur
Bu bölüm, kullanıcı adı, parola ve kullanıcı rolünü depolamak için bir örnek veritabanı oluşturulması gösterilmiştir. Kullanıcı rollerini veritabanında depolamak ve rol tabanlı güvenliği uygulamak istediğiniz rolü sütun gerekir.
Başlat menüsünde Çalıştır ' ı tıklatın ve sonra da Not Defteri'ni açmak için Not Defteri yazın.
Aşağıdaki SQL komut dosyası kodunu vurgulayın kodunu sağ tıklatın ve sonra Kopyala ' yı tıklatın. Not Defteri'nde, aşağıdaki kodu yapıştırın için Düzen menüsünden Yapıştır ':
if exists (select * from sysobjects where id =
object_id(N'[dbo].[Users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Users]
GO
CREATE TABLE [dbo].[Users] (
[uname] [varchar] (15) NOT NULL ,
[Pwd] [varchar] (25) NOT NULL ,
[userRole] [varchar] (25) NOT NULL ,
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Users] WITH NOCHECK ADD
CONSTRAINT [PK_Users] PRIMARY KEY NONCLUSTERED
(
[uname]
) ON [PRIMARY]
GO
INSERT INTO Users values('user1','user1','Manager')
INSERT INTO Users values('user2','user2','Admin')
INSERT INTO Users values('user3','user3','User')
GO
Dosyayı Users.sql kaydedin.
Microsoft SQL Server bilgisayarında, Query Analyzer'da Users.sql'ni açın. Veritabanlarının listesinden pubs ' ı tıklatın ve komut dosyasını çalıştırın. Bu örnek, kullanıcıların bir tablo oluşturur ve bu Örnek uygulamayla kullanılmak üzere pubs veritabanındaki tablo doldurur.
Bu Web formu, böylece kullanıcı adlarını ve parolalarını, uygulamaya oturum sağlayabilir, bir oturum açma formu kullanıcılarına sunmak için kullanılır.
Tasarım görünümüne geçiş yapın ve sayfayı kaydedin.
It kullanıcı kimlik doğrulama kullanan biçimde olay işleyicisine kod
Bu bölüm arka planda kodlama sayfasında (Logon.aspx.cs) veren kodunu gösterir.
Logon Logon.aspx.cs dosyayı açmak için çift tıklatın.
Gereken ad alanlarını kodu - dosya arkasında alma:
using System.Data.SqlClient;
using System.Web.Security;
Veritabanında arama yaparak, kullanıcı kimlik bilgilerini doğrulamak için ValidateUser bir işlev oluşturun. (Bağlantı dizesi veritabanınıza işaret edecek biçimde değiştirin dikkat edin).
private bool ValidateUser( string userName, string passWord )
{
SqlConnection conn;
SqlCommand cmd;
string lookupPassword = null;
// Check for invalid userName.
// userName must not be null and must be between 1 and 15 characters.
if ( ( null == userName ) || ( 0 == userName.Length ) || ( userName.Length > 15 ) )
{
System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of userName failed." );
return false;
}
// Check for invalid passWord.
// passWord must not be null and must be between 1 and 25 characters.
if ( ( null == passWord ) || ( 0 == passWord.Length ) || ( passWord.Length > 25 ) )
{
System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of passWord failed." );
return false;
}
try
{
// Consult with your SQL Server administrator for an appropriate connection
// string to use to connect to your local SQL Server.
conn = new SqlConnection( "server=localhost;Integrated Security=SSPI;database=pubs" );
conn.Open();
// Create SqlCommand to select pwd field from users table given supplied userName.
cmd = new SqlCommand( "Select pwd from users where uname=@userName", conn );
cmd.Parameters.Add( "@userName", SqlDbType.VarChar, 25 );
cmd.Parameters["@userName"].Value = userName;
// Execute command and fetch pwd field into lookupPassword string.
lookupPassword = (string) cmd.ExecuteScalar();
// Cleanup command and connection objects.
cmd.Dispose();
conn.Dispose();
}
catch ( Exception ex )
{
// Add error handling here for debugging.
// This error message should not be sent back to the caller.
System.Diagnostics.Trace.WriteLine( "[ValidateUser] Exception " + ex.Message );
}
// If no password found, return false.
if ( null == lookupPassword )
{
// You could write failed login attempts here to event log for additional security.
return false;
}
// Compare lookupPassword and input passWord, using a case-sensitive comparison.
return ( 0 == string.Compare( lookupPassword, passWord, false ) );
}
Form kimlik doğrulama tanımlama bilgisi oluşturabilir ve kullanıcıyı cmdLogin_ServerClick olay uygun bir sayfaya yeniden yönlendirmek için iki yöntemden birini kullanabilirsiniz. Her iki senaryo için örnek kodu sağlanır. Kendisine göre gereksinimin birini kullanın.
Otomatik olarak form kimlik doğrulama tanımlama bilgisi oluşturabilir ve kullanıcıyı cmdLogin_ServerClick olay uygun bir sayfaya yeniden yönlendirmek için RedirectFromLoginPage yöntemini çağırın:
Kimlik doğrulama bileti oluşturmak şifrelemeden, tanımlama bilgisi oluşturmak, yanıt eklemek ve kullanıcının yeniden yönlendirin. Bu tanımlama bilgisi nasıl oluşturacağınız, daha fazla denetim sağlar. Özel veri FormsAuthenticationTicket birlikte bu durumda de ekleyebilirsiniz.
private void cmdLogin_ServerClick(object sender, System.EventArgs e)
{
if (ValidateUser(txtUserName.Value,txtUserPass.Value) )
{
FormsAuthenticationTicket tkt;
string cookiestr;
HttpCookie ck;
tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now,
DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");
cookiestr = FormsAuthentication.Encrypt(tkt);
ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
if (chkPersistCookie.Checked)
ck.Expires=tkt.Expiration;
ck.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(ck);
string strRedirect;
strRedirect = Request["ReturnUrl"];
if (strRedirect==null)
strRedirect = "default.aspx";
Response.Redirect(strRedirect, true);
}
else
Response.Redirect("logon.aspx", true);
}
Aşağıdaki kodu Web Form tasarımcısının oluşturduğu kodu ınitializecomponent yöntemini eklendiğini doğrulayın:
this.cmdLogin.ServerClick += new System.EventHandler(this.cmdLogin_ServerClick);
Bu bölüm, kimlik doğrulaması sonra kullanıcılar yönlendirilir bir sınama sayfası oluşturur. Bunlar, kullanıcıların uygulamayı ilk oturum açma olmadan bu sayfaya göz atarsanız, oturum açma sayfasına yönlendirilir.
Varolan WebForm1.aspx sayfası default.aspx olarak yeniden adlandırın ve Düzenleyicisi içinde açın.
HTML görünümüne geçin ve <form>etiketleri arasında aşağıdaki kodu kopyalayın:
Parolaları güvenli bir veritabanında saklamak isteyebilirsiniz. FormsAuthentication sınıf yardımcı program işlevi HashPasswordForStoringInConfigFile adlı, veritabanı veya yapılandırma dosyasında depolamak için önce parolaları şifrelemek için kullanabilirsiniz.
Kolayca gerekirse değiştirebilirsiniz yapılandırma dosyasının (Web.config) SQL bağlantı bilgilerini saklamak isteyebilirsiniz.
Oturum açma farklı birleşimlerini parolaları kullanmaya çalışan önlemek için bir kod ekleyerek düşünebilirsiniz. Örneğin, yalnızca iki veya üç oturum açma girişimini kabul eden mantık içerebilir. Kullanıcının belirli sayıda girişim içinde oturum açamıyor, farklı bir sayfasını ziyaret ettiğinizde veya destek hattınızın çağırarak, kullanıcının hesabını sağlayana kadar oturum açan kullanıcıya izin vermek veritabanındaki bir bayrak ayarlamak isteyebilirsiniz. Buna ek olarak, uygun hata işleme gerekli olan her yerde eklemeniz gerekir.
Kullanıcı kimlik doğrulama tanımlama bilgisini alarak tanımlandığından, böylece kimlik doğrulama tanımlama bilgisini ve aktarılmasına neden diğer önemli bilgileri hiç kimseye deceive, bu uygulamayı Güvenli Yuva Katmanı (SSL) kullanmayı düşünebilirsiniz.
Istemciniz kabul veya üzerinde kendi tarayıcı tanımlama bilgilerini etkinleştirmek, form tabanlı kimlik doğrulaması gerektirir.
<authentication><a1>Zaman aşımı</a1> parametresi yapılandırma bölümü, kimlik doğrulama tanımlama bilgisini yeniden aralığı denetler. Daha iyi performans ve güvenlik sağlayan bir değer seçebilirsiniz.
Belirli bir ara proxy'ler ve Internet önbelleğine sonra farklı bir kullanıcı için döndürülen set-Cookie üstbilgiler içeren bir Web sunucusu yanıtları önbelleğe. Form tabanlı kimlik doğrulaması, kullanıcıların kimliklerini doğrulamak için bir tanımlama bilgisi kullandığından, bu kullanıcıların yanlışlıkla (veya kasıtlı olarak) ara proxy veya başlangıçta için tasarlanmıştır. önbellek bir tanımlama bilgisi alma başka bir kullanıcının özelliklerini almasına neden olabilir.
<credentials>Kullanan basit form tabanlı kimlik doğrulaması uygulamak hakkında daha fazla bilgi için bölümünde, kullanıcılar ve parolaları depolamak için aşağıdaki GotDotNet ASP.NET QuickStart örneği için bakın:
Kullanıcılar ve parolaları depolamak için bir XML dosyası kullanan form tabanlı kimlik doğrulaması uygulamak hakkında daha fazla bilgi için aşağıdaki konuda, .NET Framework Software Development Kit'e (SDK) başvurun belgeler:
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:301240
(http://support.microsoft.com/kb/301240/en-us/
)
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.