| FAOsoft | 28.09.2005 - 13:23:33 |
| Win32 uygulamalarımızda kullanıcı hazırlamış olduğumuz şifre formunu geçmeden biz is1temedikçe diğer formlara geçemez. Aynı şeyi Cokkie ile yapmak mümkün ama Web projelerinde kullanıcının pc’si üzerinde fazla hakimiyetimiz yok. Şifre formu için o kadar düşünmenize gerek yok çünkü bir-iki basit yöntemle tüm projeyi kontrol altına alabiliyoruz.
Öncelikle iki webform oluşturun. Biri ana sayfamız diğeri ise Login sayfamız olsun. Örnek için Ana sayfamıza bir Label bileşeni ekleyip Text özelliğine sitemize hoş geldiniz yazın. Şifre formuna kullanıcı adı ve şifre girmek için; iki TextBox, griş yapabilmek içinde bir button ekleyin. TextBox1: Kullanıcı adını; TextBox2 ise: Parolayı Girmemiz için kullanıyoruz.. Kullanıcı bilgisini veritabanında sorgulayacağız. Veritabanı olarak Access kullandığımız içinde aşağıdaki NameSpace’i Uses’a ekleyin. ”System.Data.OleDb” Kullanıcı işlemlerinde kullanacağımız kod için de Uses kısmına “System.Web.Securty” NameSpace’ini ekleyin. Login webformuna eklediğiniz Buttonun OnClick olayına aşağıdaki kodu ekleyin. procedure TWebForm2.Button1_Click(sender: System.Object; e: System.EventArgs);
Var MyConnect:OleDBConnection; MyCommand:OleDBCommand; i:integer; begin //Bağlantıyı oluştur MyConnect:=oleDbConnection.Create('Provider=microsoft.Jet.OLEDB.4.0;'+'data source='+Server.MapPath('/MyLoginProc/Data/Data.mdb')); MyConnect.Open; // bir seçim sorgusu oluşturalım. ihtiyacımız olan bir Command nesnesi MyCommand := oleDbCommand.Create ( 'SELECT Count(*) as Toplam FROM KULLANICILAR where USERNAME='+#39+TextBox1.Text+#39+' And PASSWORD='+#39+TextBox2.Text+#39,MyConnect); // ve komutu ExecuteReader ile işletelim. Dönüş değeri bir DataReader nesnesi. i:=Convert.ToInt32(MyCommand.ExecuteScalar); MyConnect.Close; if i<1 then Response.Write('Giriş başarısız') else FormsAuthentication.RedirectFromLoginPage(TextBox1.Text,True); end; Yukarıdaki kodda Veritabanına bağlanıp verilen kullanıcı adı ve şifreye sahip kaç kullanıcının olduğunu sorgulayıp dönen değeri “i” değişkenine atıyoruz. “i” değişkeni 1’den küçük ani sıfır üretirse böyle bir kullanıcı yok demektir. Aksi taktirde yani kullanıcı varsa “Else”den sonraki kod işler. Bu kod birazdan Web.Config dosyası üzerinde yapacağımız kodlamaya kullanıcı adını gönderip doğru parola olduğunu True Boolean değişkeni ile belirtir. Şimdi Web.Config dosyasını çift tıklayıp <authentication mode="windows" />
odlarını silip, o kodun bulunduğu yere aşağıdaki kodları yazın. <authentication mode="Forms">
<forms name="logincookie" loginUrl="WebForm2.aspx" protection="All" timeout="30"/> </authentication> <authorization> <deny users="?" /> </authorization> “WebForm2.aspx” yerine kendi şifre formunuzu, “30” yerine kullanıcının kaç dakika işlem yapmazsa otomatik çıkış yapmasını istiyorsanız dakika cinsinden belirtebilirsiniz. Deny kısmı ise kullanıcı adı olmayan kullanıcıların girişini engeller. Not: Wev.config dosyası Büyük Küçük harfe duyarlıdır. | |
| gkimirti | 28.09.2005 - 13:33:13 |
| saolasın,
guzel fikirler olustu kafamda sayende... | |
| FAOsoft | 28.09.2005 - 14:57:26 |
| Rica ederim.
birde eklemeyi unutmuşum, Kullanıcının bir buttona basarak LogOut (Çıkış) olmasını istiyorsanz aşağıdaki kodu kullanın Session.Abandon;
FormsAuthentication.SignOut; | |
| gkimirti | 28.09.2005 - 15:17:44 |
| user login olunca default.aspx sayfasına yonleniyor.
simdi kullanıcı hicbirsey yazmaya default.aspx e gitmiyormu normalde, yoksa login formundan session nesnesi ile bu user basarıyla giris yaptı gibi bir parametre mi aktarmalıyız... | |
| FAOsoft | 28.09.2005 - 15:36:18 |
| Login penceresi hangi sayfayı çağırırken gelmişse o sayfaya yönlendirilir.
daha bende pek bilgili sayılmam ama yönlendirilecek sayffayı belirtebiliyordun sanırım. nasıl mı bende bilmiyorum :) öğrenirsem yazarım | |
| mbt | 28.09.2005 - 18:13:35 |
| Borland'ın BDNTV kısmında bunlarla ilgili seminerler var.
http://bdntv.borland.com/delphi/Validation.html Bu örnekte anlatılan görüntülü seminer işinizi görecektir. | |
| şimal | 29.09.2005 - 09:31:32 |
| merhabalar
ben c# ile çalışıyordum kodlar yabanci gelmedi ancak: MyCommand := oleDbCommand.Create ( 'SELECT Count(*) as Toplam FROM KULLANICILAR where USERNAME='+#39+TextBox1.Text+#39+' And PASSWORD='+#39+TextBox2.Text+#39,MyConnect); TextBox1.Text ve TextBox2.Text icindeki stringden or gibi select cümleciğini her zaman true ya çekecek kelimeleri ayıklayan bir fonksiyon yada if i<1 then Response.Write('Giriş başarısız') else yerine if i<1 and i>=2 then Response.Write('Giriş başarısız') else derseniz doğru olur gibime geliyor. Kalın sağlıcakla... | |
| FAOsoft | 30.09.2005 - 09:09:18 |
| "ELSE"den sonra aşağıdaki kodla teşekkür sayfası açabilirsin
FormsAuthentication.SetAuthCookie(TextBox1.Text, false);
HttpContext.Current.Response.Redirect(tesekkur.aspx); | |
| lazio | 30.09.2005 - 12:24:12 |
| normalde bende form authentication kullanıyorum ama bunun bi sakıncası var. örneğin, kullanıcıadı ve şifre ile sisteme girildikten sonra başka bir makinadan başka birisi aynı kullanıcı adi ve şifre ile sisteme girebilir. ama doğru olani bir user sistemi terk etmeden aynı user ile kimsenin sisteme girememesidir. - gerçi form authentication ın gerektiği durumlarda vardır muhakkak - benim duyduğum kadarıyla asp.net ve ms msql server ortaklaşa bu sorunu ortadan kaldırabiliyor ama çok fazla uğraşma imkanım olmadı daha doğrusu bu aralar .net i biraz askıya aldık. eğer bunu bulup kullanırsanız zannediyorum daha çok işinize yarayacaktır. kolay gelsin. | |
| t-hex | 30.09.2005 - 14:03:06 |
TextBox1.Text
ve TextBox2.Text icindeki stringden or gibi select cümleciğini her zaman true ya çekecek kelimeleri ayıklayan bir fonksiyon yada textBox1.Text ve textBox2.Text Tırnak karakterleri arasında kaldığından öyle yapamazlar heralde | |