Print Page | Close Window

Session sonlandirma

Printed From: C#nedir?com
Category: ASP.NET
Forum Name: ASP.NET
Forum Description: ASP.NET
URL: http://forum.csharpnedir.com/forum_posts.asp?TID=30972
Printed Date: 15 Temmuz 2020 at 11:08
Software Version: Web Wiz Forums 11.01 - http://www.webwizforums.com


Topic: Session sonlandirma
Posted By: peaceful
Subject: Session sonlandirma
Date Posted: 21 Mayıs 2010 at 11:45
Merhabalar..

Projemde olusturdugum Session olayini "Oturumu Kapat" butonuna tiklandigi zaman sonlandirmak istiyorum. Bunun icin Session.Clear() komutunu kullaniyorum ancak oturum yine kapanmiyor. Uye olmayanlarin girememesi gereken sayfalara yine girebiliyor. Ancak tarayiciyi kapatirsam oturum kapanmis oluyor. Bu nasil cozebilirim?

Tesekkurler..


-------------
the person you have called cannot be reached at the moment, please try again later



Replies:
Posted By: izdirap
Date Posted: 21 Mayıs 2010 at 12:03
Session.Abondon() kullanmayı deneyin

-------------
Onur ÜNLÜ
http://onurunlu.blogcu.com


Posted By: peaceful
Date Posted: 21 Mayıs 2010 at 21:55
Merhaba..

Session.Abondon() komutuyla tarayiciyi kapatmadan oturumu kapatabiliyor ve yeni kullanici acabiliyorum.

Ancak Admin yetkisine sahip bir kullanicinin oturumunu kapatip tekrar LOG IN sayfasina gittigim zaman diger sayfalara erisim engellenmiyor. Admin yetkileri devam ediyor.

Bu Session'i iptal etmenin bir yolu yok mu?

Tesekkurler..


-------------
the person you have called cannot be reached at the moment, please try again later


Posted By: hümam
Date Posted: 22 Mayıs 2010 at 00:31
Originally posted by peaceful peaceful wrote:

Merhaba..

Session.Abondon() komutuyla tarayiciyi kapatmadan oturumu kapatabiliyor ve yeni kullanici acabiliyorum.

Ancak Admin yetkisine sahip bir kullanicinin oturumunu kapatip tekrar LOG IN sayfasina gittigim zaman diger sayfalara erisim engellenmiyor. Admin yetkileri devam ediyor.

Bu Session'i iptal etmenin bir yolu yok mu?

Tesekkurler..


şöyle denesen peki

session["admin"]="GirisOK";

ve loginde bunu böyle doldur

kontrol yaparken
if(session["admin"] !="GirisOK")
  response.redireckt("login.aspx");

çıkış yaptığın sayfa da
session["admin"]="CikisYapildi";
response.redireckt(login.aspx);

bu işini görür bence




-------------
VERMEK İSTEMESEYDİ İSTEMEZ VERMEZDİ.
http://www.csharpnedir.com/Forum2/forum_posts.asp?TID=25373&PID=103855


Posted By: peaceful
Date Posted: 23 Mayıs 2010 at 01:53
Merhaba..

Onu da denedim tabi..Ama bir yerlerde birsey yanlis gidiyor.. Session.Stop() gibi bir komuta ihtiyacim var..Session'i tamamen pasif hale getirecek..


-------------
the person you have called cannot be reached at the moment, please try again later


Posted By: kemalakgun
Date Posted: 23 Mayıs 2010 at 01:57
Global.asax da sesion end ve application end de kontrol yapmayı denediniz mi?


Posted By: ICell
Date Posted: 23 Mayıs 2010 at 04:25
Herşeyden önce, Session ile sayfalara giriş yapıp yapmama ayrı şeylerdir.  Senin sorunun Sessionla değil.
1- Sorunun Authorization veya Authentication ile ilgili olabilir.
2- Belirtmemişssin ama vatandaş logout yaptıktan sonra, browser ın Back tuşu ile mi sayfalara tekrar girebiliyor? Öyleyse sorunun farklı çözümü vardır. Yok sayfanın ismini yazıp entera basarak mı giriyor o zaman sorunun 1. madde ile ilgilidir.

Tekrar edeyim, bir sayfayı görme yetkisi ile Session arasında birebir bir alaka yoktur.


-------------
X someobject= new X();
someobject.ID="ICell";
this.FindControl("ICell") as X


Posted By: ozatmaca
Date Posted: 23 Mayıs 2010 at 09:33
admin yetkilerini nasıl tutuoyrsunuz. eğer session da tutuoyrsanız abandon onları da temizler.
login olayını nasıl yapıyorsunuz ve admin yetkisini nasıl veriyorsunuz. kodlarını yazarmısınız.


-------------
...


Posted By: hackwebnet
Date Posted: 23 Mayıs 2010 at 19:12
Cokie kullanmayı denedinizmi? Bence daha sağlıklı sonuçlar elde edebilirsiniz. Ayrıca şu şekilde yapabilirsiniz:

Login aspx sayfasında seesion ile veya cokie ile birlikte giriş yapan kullanıcının MD5 olarak sakladığınız şifresini veya kullanıcı adını atama yaparsınız. Yetki vermek istediğiniz hersayfada (masterpage kullanıyorsanız) veya masterpagede bir kontrol yazarsınız. Eğer databasedeki bilgiler ile sessiondaki bilgiler uyuşuyorsa işlem yaptırmasını sağlayabilirsiniz. Böylelikle hosting firmasından yeni bir host alan lamer sitenize saldırı yapamaz. Yoksa Mazallah kendi sitesinden sessionu doğru şekilde doldurur sitenizde istediğini yapar. Bu konu basit bir konu değil. Bu yüzden biraz araştırma yapmanızı tavsiye ederim. Ayrıca bütün bu anlattıklarımı uyguladıysanız çıkış yapabilmek için
Session.Clear();
Session.Remove("kullaniciGirisOK");
Session.RemoveAll(); komutları işinizi görecektir. Bu şekilde kullanmanızı tavsiye etmem. Ancak şu şekilde bir örnek verebilirim:

Login aspx:


string kullaniciadi = TextBoxKullaniciAdi.Text;
stirng Sifre= TextBoxSifre.Text;
string MD5Sifre = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(LoginPassword.Text, "MD5");
Response.reditect("LoginBasliyor.aspx?KullaniciAdi=" + kullaniciadi + "&Sifre=" + MD5Sifre);


LoginBasliyor.aspx

Page_Load Kısmı

//Burda Kullanıcı Bilgileri Doğrulamasını yap. Normal giriş yapılırken nasıl yapıyorsan o şekilde yap.

if(Bütün Yönergeler Doğruysa)
{
          HttpCookie cookie = new HttpCookie("cokieGirisOK");
          cookie.Name = "cokieGirisOK";
          string GirisYapanKisininSifresi = Request.QueryString.Get("Sifre");
          cookie.Values.Add("Sifre", GirisYapanKisininSifresi);
          cookie.Expires = DateTime.Now.Date.AddDays(1);
          HttpContext.Current.Response.Cookies.Add(cookie);
          HttpContext.Current.Request.Cookies.Add(cookie);
}

Giriş yapılan sayfa.aspx

string GirisYapanKullanici = Request.Cookies["cokieGirisOK"]["Sifre"];

if(GirisYapanKullanici != string.empty)//Bilgilerin boş olup olmadığını kontrol ediyoruz.
{
//Burda Yine bir kontrol yapıyoruz.
sqlcommand cmd = new sqlcommand("SELECT * FROM Kullanicitbl WHERE Sifre=@Sifre", baglanti);
cmd.Parameters.add("@Sifre", GirisYapanKullanici);
baglanti.open();
datareader rdr = cmd.executereader();
if(rdr != null)
{
while(rdr.read())
{
LabelGirisYapanKullanici = rdr["KullaniciAdi"].ToString();
}
else
{
response.reditect("Login.aspx");
}
}
else
{
response.reditect("Login.aspx");
}
}

//Bu güzel bir Giriş Örneğiydi. Şimdide çıkış yapalım:

//Herhangi bir butonun click eventine şu kodu yaz:

    HttpCookie cookie = new HttpCookie("cokieGirisOK");
    string GirisYapanKisininSifresi = "";
    cookie.Values.Add("Sifre", GirisYapanKisininSifresi);
    cookie.Expires = DateTime.Now.AddMilliseconds(1);
    HttpContext.Current.Response.Cookies.Add(cookie);
    HttpContext.Current.Request.Cookies.Add(cookie);
    Response.Redirect("Login.aspx");

//Yukarıdakide Çıkış örneğiydi.

//Kodlamada hata vardır. Sadece örnek amaçlı yazdığım içindir oda. Kodlarını düzenlersen sağlıklı bir login sayfan olacağına inanmaktayım...


-------------
sişarp'da Nedir ki?


Posted By: peaceful
Date Posted: 26 Mayıs 2010 at 08:11
Originally posted by ozatmaca ozatmaca wrote:

admin yetkilerini nasıl tutuoyrsunuz. eğer session da tutuoyrsanız abandon onları da temizler. login olayını nasıl yapıyorsunuz ve admin yetkisini nasıl veriyorsunuz. kodlarını yazarmısınız.


Dim member As String = Text_UserName.Text
        Dim sifre As String = Text_Password.Text
        Dim pass, usr, ID, name, surname, degree As String

        conn.ConnectionString = "Data Source=127.0.0.1;Initial Catalog=ABYS;User ID=abys;Password=1234"
        conn.Open()
        comm.Connection = conn

        comm.CommandText = "SELECT * FROM Tbl_Uye WHERE Kullanici_Adi= '" & Text_UserName.Text & "'"

        ps = comm.ExecuteReader()

        Do While ps.Read()
            degree = ps(5).ToString()
            pass = ps(4).ToString()
            usr = ps(3).ToString()
            surname = ps(2).ToString()
            name = ps(1).ToString()
            ID = ps(0).ToString
        Loop

        If Lbl_Sifrelenen.Text = pass Then
            Session("durum") = "open"

            Session("KullaniciAdi") = usr
            Session("Sifre") = pass
            Session("Isim") = name
            Session("Soyisim") = surname
            Session("Rutbe") = degree

            Session.Timeout = 60

            If Session("Rutbe") <> "User" Then
               Me.Response.Redirect("admin.aspx")
            ElseIf Session("Rutbe") <> "Admin" Then
               Me.Response.Redirect("index.aspx")
            End If
        Else
            Lbl_Mesaj.Text = "Kullanıcı adı veya Parola hatalı."
            Lbl_Mesaj.Visible = True

            ps.Close()
            conn.Close()
-----------------------------------------
Seklinde bir login islemi uyguluyorum. Oncelikle 6. sutundaki Rutbe kaydini aliyor, sonra bunu Session("Rutbe") olarak sakliyorum.



-------------
the person you have called cannot be reached at the moment, please try again later


Posted By: peaceful
Date Posted: 26 Mayıs 2010 at 08:16
Originally posted by ICell ICell wrote:

Herşeyden önce, Session ile sayfalara giriş yapıp yapmama ayrı şeylerdir.  Senin sorunun Sessionla değil. 1- Sorunun Authorization veya Authentication ile ilgili olabilir.2- Belirtmemişssin ama vatandaş logout yaptıktan sonra, browser ın Back tuşu ile mi sayfalara tekrar girebiliyor? Öyleyse sorunun farklı çözümü vardır. Yok sayfanın ismini yazıp entera basarak mı giriyor o zaman sorunun 1. madde ile ilgilidir.Tekrar edeyim, bir sayfayı görme yetkisi ile Session arasında birebir bir alaka yoktur.


Merhaba..

Kisi logout yaptiktan sonra adres cubuguna sayfanin adini yazdiginda yonlenebiliyor. Aslinda girememesi lazim. Henuz hic login olmadigi zaman durumlar dogru isliyor ama logout yaptiktan sonra Session devam ediyor.

Tesekkurler..Ilk yazdiginiz durumlara bir goz atacagim..


-------------
the person you have called cannot be reached at the moment, please try again later


Posted By: ozatmaca
Date Posted: 26 Mayıs 2010 at 13:42
c# a göre yazacağım.
 If Session("Rutbe") <> "User" Then
bu durumda session null bile olsa bu şart doğru olarak sağlanır ve admine yönlendirilir. (tabi bu yeterli bir neden değil sadece bir hatayı belirttim)

peki sayfalarda admin kontrolünü nasıl yapıyorsunuz.
yani girilmemesi gereken bir sayfada adminmi değilmi diye nasıl bir kontrol yapıyorsunuz

ya da hepsi bi tarafa bu kodların üstüne bi breakpoint koyun sayfayı f5 ile çalıştırın  ve akılşı izleyin. hangi şartlar sağlanmaması gerektiği halde sağlanıyor onları görün. sessionların önceki değerlerini ve login olduktan sonraki değerlerini izleyin.


-------------
...


Posted By: peaceful
Date Posted: 26 Mayıs 2010 at 14:31

Tesekkur ederim..Sorun cozuldu..

If Session("Rutbe") = "User" Then ile If Session("Rutbe") <> "Admin" Then demek arasinda nasil oluyorsa farklilik oluyor. Her kullanicinin mutlaka bir rutbesi var, bu yuzden Null olamaz zaten ve Admin degilse mecbur User olacagindan bu durum sacma. Farklilik olmamasi lazim ama yine de vaziyet bu.

Su an Session ile alakali bir sorun kalmadi. Herkese yardimlarindan dolayi tesekkur ederim..

Iyi calismalar..


-------------
the person you have called cannot be reached at the moment, please try again later


Posted By: ozatmaca
Date Posted: 26 Mayıs 2010 at 16:24
fark şurdan kaynaklanıyor If Session("Rutbe") <> "Admin" Then  dediğiniz zaman session null bile olsa girer çünkü session abandon() yaptığınnızda sessionlar null oluuyor.
zaten null olduğu zaman bu şart hata oluşturur istisna fırlatır "object null referance ...." gibi. 



-------------
...


Posted By: peaceful
Date Posted: 26 Mayıs 2010 at 16:38
Hmm..Anladim..Bu durumda Null durumu icin de bir If olusturmam gerekir.

Bazi komutlarin(Abandon gibi) tam olarak ne ise yaradigini bilmeyince olusan aciklari kapatmak icin saatlerce ugrasiyoruz iste..

Tekrar tesekkur ederim..


-------------
the person you have called cannot be reached at the moment, please try again later


Posted By: emrefe
Date Posted: 19 Kasım 2019 at 13:42
Merhabalar,
Windows Form ekranında şöyle bir şey yapmak istiyorum. C:\Users klasörünün altında ki kişileri seçip silmek istiyorum bu seçme işini manuel seçilerek chckboxlar ile yapmayı düşünüyorum. Böylelikle 
1-) windwos accountlarını programı çalıştırırken nasıl çekerim. 
2-) seçmiş olduğum accountları delete ettikten sonra eş zamanlı olarak "Bilgisayar\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" bloğundan da silmem gerekiyor. 

Fikirlerinizi/yardımlarınızı talep ederim.

Teşekkürler.



Print Page | Close Window

Forum Software by Web Wiz Forums® version 11.01 - http://www.webwizforums.com
Copyright ©2001-2014 Web Wiz Ltd. - http://www.webwiz.co.uk