ASP.NET Oturum Yönetimi Hakkında ???
-
aynı kullanıcı adı ve şifre ile aynı anda farklı yerlerden sisteme giriş olmasını nasıl engelleyebilirim.session kullandım sadece sistemde.asp.net e de yeni basladım acemiyim.yanı ben A Kişisine şifre vericem A kişisi bu sıfreyı 5 kişi ile paylasırsa bunlar aynı şifre ile girerse hepsini sistemden atsın.Bunu nasıl yapabilirim ?
-
çok fazla kullanıcı olmayacak ise Application nesnesi ile çözebilirsin. Session nasıl kullanıcı bazlı ise Application'da kullanımı aynı ama server bazlıdır. Orda online kullanıcıları tutabilirsin.
Çok kullanıcı var ise Uye tablonda bir kayıt açarak SonGirisTarih adında onu update edersin ve login olmaya çalıştığında 15 dakikadan(default session süresi) fazladır ortalıkta yoksa ölmüş demektir o oturum değilse zaten onlinedır.
Akla ilk geleni yazdım daha da geliştirilebilir tabiki
-
ilk dediğine bakıcam arastırıcam. 2.dediğini biraz ayrıntılı anlatırmısın tam anlayamadım.
-
dostum adamın durum bilgisini (login olup olmadığını) xml ya da sql de saklayıp login yapılırken kontrol ettireceksin. login durumunu session da saklıyosan büyük ihtimalle session süresini standart sürenin üzerine çıkardığın için 15 dakikalık zaman diliminden sonra yaptığın işlem hiçbir işe yaramayacaktır...
-
veritabanında üyeler tablosunda bi sutün acıcam adı session olsun tüm üyelerde default olarak 0 olsun diyelim. diyelim A üyesi login oldu session 1 olucak.sonra B siteye girmek isterse aynı kullanıcı adıyla gırcegı için bakıcam session 1 se B yi alma içeri diycem.A cıkarken logout yaparsa tablomdaki session degerını 0 yapıcam.peki A siteden logout olarak cıkmazsa direk çarpı ile cıkarsa session degerını nasıl 0 yapıcam??
-
Aynı kullanıcının farklı yerde aynı anda oturum açmasını şu şekilde engellemiştim:
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
if (HttpContext.Current.Session["checkKey"] != null)
{
string cacheKey = HttpContext.Current.Session["checkKey"].ToString();
if ((string)HttpContext.Current.Cache[cacheKey] != HttpContext.Current.Session.SessionID)
{
HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
HttpCookie aCookie;
string cookieName;
int limit = HttpContext.Current.Request.Cookies.Count;
for (int i = 0; i < limit; i++)
{
cookieName = HttpContext.Current.Request.Cookies[i].Name;
aCookie = new HttpCookie(cookieName);
aCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(aCookie);
}
HttpContext.Current.Response.Redirect("/DuplicateLoginError.aspx");
}
string user = (string)HttpContext.Current.Cache[cacheKey];
}
}
}
-
application ve cookie olayına bakayım kitaptan, sonra senin kodunu inceleyeceğim TeRRoR hocam.Çok saolun yardımcı olduğunuz için yapamazsam eğer burdan yazarım yine.
-
hocam üyenin her logininde bir token üreteceksin rastgele bunu db ye kaydet sonra yapacağın her işlemden önce token tutuyormu kontrol et
-
token nasıl üretiliyo bilmiyorum ona bakarım.peki performans olarak maliyetli olur mu kullanıcının her hareketınden önce bu tarz bı kontrol yapmak.
