PDA

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 یا عددی دیگر بزار .