View Full Version : بررسي وجود session
aftab_mahtab
دوشنبه 22 شهریور 1389, 08:44 صبح
با سلام خدمت دوستان و اساتيد محترم
من ميخوام در رويداد Application_BeginRequest فايل global.aspx بگم كه اگر سيژن لاگين وجود نداشت و صفحه درخواست غير از لاگين بود به صفحه خطا بره .
خوب حالا مشكل : نميدونم چجوري چك كنم كه سيژن لاگين وجود داره يا نه ؟ من توي دستوراتي كه با سي شارپ نوشته بودن ديدم :
session["xxx"] != null
ولي كلمه كليدي نال براي وبي دات نت ناشناختست ، حالا چجوري بايد چك كنم ؟ و آخر اينكه آيا اصلا روش من درسته و بايد تو اين رويداد چك كنم ؟
منتظر راهنمايي هاي شما دوستان هستم . ممنونم
aftab_mahtab
دوشنبه 22 شهریور 1389, 13:13 عصر
اين كد سي پارپ هست ، كه من وبي دات نتي رو ميخوام !
if (Session["LoggedIn"] == null)
{
Response.Redirect("YourSignInPage.aspx");
}
else
{
// Do whatever you were going to do.
}
ممنونم . لطفا F1
maxpayn2
دوشنبه 22 شهریور 1389, 13:18 عصر
بهتره توی load صفحه ای که میخوای محدودش کنی این کد رو بنویسی
برای به دست آوردن کد وی بی هم این سایت رو ببین :
http://www.developerfusion.com/tools/convert/csharp-to-vb/
Ali_M.Eghbaldar
دوشنبه 22 شهریور 1389, 13:45 عصر
سلام
اگه قبلاSession با یک رشته پرکرده باشی مثل username کاربر ورود کرده با دستور ساده زیر می تونی بررسیش کنی !!
If Session("USER") = String.Empty Then ...
aftab_mahtab
دوشنبه 22 شهریور 1389, 14:44 عصر
سلام
اگه قبلاSession با یک رشته پرکرده باشی مثل username کاربر ورود کرده با دستور ساده زیر می تونی بررسیش کنی !!
If Session("USER") = String.Empty Then ...
پس بزارين بگم دقيقا ميخوام چيكار كنم :
من براي اينكه جلويورود به سيستم با كپي كردن آدرس ، در آدرس بار رو بگيرم ميخوام هر آدرس درخواستي رو بغير از صفحه لاگين ، چك كن كه سيژن لاگين براش وجود داره يا نه ؟
اين درخواست بالاي من براي رسيدن به اين هدفه . با اين كاري كه گفتم راه رو درست دارم ميرم ؟ بازم ممنونم . منتظر راهنمايي هاي مفيد شما هستم . متشكرم
maxpayn2
دوشنبه 22 شهریور 1389, 15:11 عصر
فکر کنم جوابم واضح بود
aftab_mahtab
دوشنبه 22 شهریور 1389, 15:47 عصر
فکر کنم جوابم واضح بود
با اين صحبت شما چون من تمام صفحات سايتم نياز به لاگين داره ، بايد براي لود هر صفحه بنويسم ؟ يعني بهتر نيست در رويداد درخواست آدرس چيزي بنويسم ؟ ايني كه من ميگم اشتباهه يا اينكه صحبت شما بهتره ؟ من ميخوام كمترين كد و بهترين راه رو داشته باشم با فرمايش شما ، از اونجايي كه تمام صفحات من از مستر پيج استفاده ميكنن ، آيا ميتونم تو لود مستر پيج بنويسم . لطفا نمام اين راههايي رو كه گفتم مقايسه كنيد ، من دنبال كمترين خطا و بهترين كد هستم . بازم ممنونم
maxpayn2
دوشنبه 22 شهریور 1389, 16:17 عصر
اگه تمام صفحات نیاز به لاگین داره (غیر از صفحه لاگین) ، بهتره همه رو غیر از صفحه لاگین توی یه پوشه بذاری و برای اون پوشه یه Web.config که توی اون بگی user های لاگین نشده دسترسی نداشته باشن ، به شرطی که از membership دات نت یا Role Provider اختصاصی استفاده کنی ، اگه نه توی لود مستر پیج بهتره
persian_bigboy
دوشنبه 22 شهریور 1389, 18:09 عصر
سلام دوست من ، شما به این تیکه کد نیاز دارید . البته اساتید همگی حرفه هستن و لی راه اصلیش این هست .
if Session("Login") Is Nothing Then
Response.Redirect("./Login.aspx")
End If
در ضمن میتونی این رو داخل یک کلاس بزاری ، سپس داخل کلاس یک Public Sub تعریف کنی و بعدش میتونی در تمامی صفحاتی که می خوای تحت پوشش باشن از کلاس ارس بگیری و استفاده کنی بدون اینکه مشکلی باشه .
چند نکته ، فقط در کلاس باید Name Space وب رو به صورت Imports System.Web.HttpContext استفاده کنی و سپس کد شما به شکل زیر باید بشه .
Public Class clsAuthentication
Public Sub CheckSessionExist()
if Current.Session("Login") Is Nothing Then
Current.Response.Redirect("./Login.aspx")
End If
End Sub
End Class
نکته ، فقط شما باید در فرم های خودت به این صورت فرا خونی کنی
Dim Login as new clsAuthentication
Login.CheckSessionExist()
فقط باید تو لود صفحه باشه . تمام
شما الان میتونید یک چک سیشن ساده ولی کاربردی داشته باشید .
راستی این رو میگم جهت اطلاع اساتید . زمانی که Session اکسپایر میشه یا ازبین میره ، خاصیت اون به حالت Nothing درمیاد نه حالت String.Empty ، شما باید اون رو با مقدار Nothing چک کنید . نکته شماره دو اینکه تایم پیشفرض اعتبار 20 دقیقه هستش ؛ اگر میخوای اضافه کنی Session.TimeOut = 100 یا عددی دیگر بزار .
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.