PDA

View Full Version : سوال: دسترسی به نام کاربر لاگین شده در Global.ascx



explod_javad
شنبه 06 تیر 1388, 14:15 عصر
با سلام خدمت همه دوستان.
کسی میدونه چطور میتونم در فایل global به متدد Context.User.Identity.Name دسترسی پیدا کنم
یا اینکه روش دیگری برای به دست آوردن نام کاربر لاگین شده هست؟
ممنون

iman_22a
شنبه 06 تیر 1388, 17:01 عصر
با سلام خدمت همه دوستان.
کسی میدونه چطور میتونم در فایل global به متدد Context.User.Identity.Name دسترسی پیدا کنم
یا اینکه روش دیگری برای به دست آوردن نام کاربر لاگین شده هست؟
ممنون

من اینطور استفاده کرده ام :



Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
If Context.Request.IsAuthenticated Then
Dim o As FormsIdentity
o = CType(Context.User.Identity, FormsIdentity)
Dim data As String() = o.Ticket.UserData.Split(";")
Session.Item("Name") = IIf(Not data(1) Is Nothing, data(1).ToString, Nothing)
Session.Item("CustomerCode") = IIf(Not data(2) Is Nothing, data(2).ToString, Nothing)
Session.Item("CompanyName") = IIf(Not data(3) Is Nothing, data(3).ToString, Nothing)
Session.Item("UserName") = IIf(Not data(4) Is Nothing, data(4).ToString, Nothing)
End If
End Sub

Reza_Yarahmadi
شنبه 06 تیر 1388, 18:54 عصر
تا الان از فایل global استفاده نکردم و همیشه از یکی از 3 روش زیر استفاده کردم
Session - Coocki - Application
بسته به نوع برنامه که تا چه مدت باید اطلاعات حفظ بشه از یکی از 3 روش بالا میتونی استفاده کنی.
( فایل global مثل متغیر Application عمل میکنه)

explod_javad
شنبه 06 تیر 1388, 20:42 عصر
تا الان از فایل global استفاده نکردم و همیشه از یکی از 3 روش زیر استفاده کردم
Session - Coocki - Application
بسته به نوع برنامه که تا چه مدت باید اطلاعات حفظ بشه از یکی از 3 روش بالا میتونی استفاده کنی.
( فایل global مثل متغیر Application عمل میکنه)

با عرض پوزش ولی چه ربطی داشت؟
من میخام نام کاربری که لاگین کرده رو بدست بیارم.
با این حال از توجهت ممنون
قصد من از استفاده این کد در ایونت Application_start ، ثبت زمان مراجعه کاربر در یتابیس هست.
ممنون

Reza_Yarahmadi
شنبه 06 تیر 1388, 23:27 عصر
شما گفتید میخواید نام کاربریی که لاگین کرده رو داشته باشید، درسته؟
توی صفحه لاگین وقتی نام کاربری و پسورد چک شد و اعتبار اون هم تایید شد، مثلا یه Session درست میکنید و مقدارش رو برابر با نام کاربری که لاگین کرده قرار میدید و هر جایی از وبسایت که خواستید ازش استفاده میکنید. فکر میکنم این جواب سؤالتون بود، درسته؟ :چشمک:
اگر هم منظورتون اینه که مشخصات کاربران سیستم رو ذخیره کنید و توی صفحه لوگین اعتبارش سنجیده بشه که میتونید از بانکها و فایلهای متنی به اضافه یکی از روشهای رمز نگاری و یا درهم ریزی استفاده کنید.
حالا بازم نمیدونم به سؤال شما ربطش دادم یا نه!!:گیج:

explod_javad
شنبه 06 تیر 1388, 23:44 عصر
ممنون دوست من.
من از توضیح اول شما ، برداشت درست نداشتم.
من میخام بدون استفاده از متغیر این کار رو بکنم.

iman_22a
یک شنبه 07 تیر 1388, 00:14 صبح
ممنون دوست من.
من از توضیح اول شما ، برداشت درست نداشتم.
من میخام بدون استفاده از متغیر این کار رو بکنم.

یعنی می خواهید وقتی یوزر به سایت مراجعه کرد ضمن ورود زمان ورود رو توی دیتابیس برای اون یوزر ثبت کنین . درسته ؟!
بیشتر توضیح بدین . اصلا چرا بدون متغیر ؟

naeeme
یک شنبه 07 تیر 1388, 08:59 صبح
System.Web.HttpContext.Current.User.Identity.Name

کلا هرجا که به page دسترسی نداشتید، می تونید از HttpContext.Current استفاده کنین.

explod_javad
یک شنبه 07 تیر 1388, 10:12 صبح
System.Web.HttpContext.Current.User.Identity.Name

کلا هرجا که به page دسترسی نداشتید، می تونید از HttpContext.Current استفاده کنین.
ممنون . ولی باز هم نشد.
Object reference not set to an instance of an object.

iman_22a
یک شنبه 07 تیر 1388, 10:42 صبح
شما زمانی می تونی به این شیء دسترسی داشته باشی که یوزر وارد سایت شده باشه . توی Application Start اصلا نمی تونی به هدفی که داری برسی . باید توی Session Start این کار و انجام بدی .
توی کد زیر که من امتحان می کنم پیغام خطای شما رو میده :



Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
If Context.Request.IsAuthenticated Then
Dim o As FormsIdentity
o = CType(Context.User.Identity, FormsIdentity)
If Context.Request.IsAuthenticated Then
Response.Write(o.Ticket.Name)
Else
Response.Write(o.Ticket.Name) ' Object refrence ...
End If
End If
End Sub

naeeme
یک شنبه 07 تیر 1388, 12:36 عصر
If (System.Web.HttpContext.Current IsNot Nothing) Then
If (System.Web.HttpContext.Current.User IsNot Nothing) Then
If (System.Web.HttpContext.Current.User.Identity IsNot Nothing) Then
If System.Web.HttpContext.Current.User.Identity.IsAut henticated Then
strResult = System.Web.HttpContext.Current.User.Identity.Name
End If
End If
End If
End If

خب! این بدیهی هست که در Application_start این خطا رو دریافت کنین. شما زمان لاگین کردن رو میخواید در سیستم ثبت کنین. پس، وقتی کاربر شما لاگین کرد و شما از


System.Web.Security.FormsAuthentication.RedirectFr omLoginPage(UserName, False)
برای ثبت لاگین کاربرتون استفاده کردین، می تونین از User.Identity استفاده کنین.

explod_javad
دوشنبه 08 تیر 1388, 09:39 صبح
دوست من ، باز هم نشد ،
کسی نمی دونه از چه کدی باید استفاده کنم ؟

explod_javad
سه شنبه 09 تیر 1388, 08:47 صبح
یعنی برای هیچ کس ، این مورد پیش نیومده ؟

iman_22a
سه شنبه 09 تیر 1388, 09:47 صبح
یعنی برای هیچ کس ، این مورد پیش نیومده ؟

شما فقط می پرسی کسی با این مشکل برخورد کرده یا نه ؟ کسی میدونه یا نمیدونه ؟ خوب جای این حرفا چند خط کدتو بذار تا بتونن راهنماییت کنن . نشون بده چکار کردی که جواب نگرفتی ! (رک بگم توی اکثر پستها و تاپیکهایی که زدید اوضاع به همین منوال بوده :لبخند:)

explod_javad
سه شنبه 09 تیر 1388, 12:16 عصر
شما فقط می پرسی کسی با این مشکل برخورد کرده یا نه ؟ کسی میدونه یا نمیدونه ؟ خوب جای این حرفا چند خط کدتو بذار تا بتونن راهنماییت کنن . نشون بده چکار کردی که جواب نگرفتی ! (رک بگم توی اکثر پستها و تاپیکهایی که زدید اوضاع به همین منوال بوده :لبخند:)
دوست من ،
ما به پرکاری شما نمی رسیم :تشویق:
در این مورد خاص ،کسی میتونه کمک کنه که به این مشکل برخورد کرده باشه .
چون همه موارد رو خودم امتحان کردم.
کد شما هم در پست های قبل هم ، تصدیق مکنن ، گفته های منو


Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
If Context.Request.IsAuthenticated Then
Dim o As FormsIdentity
o = CType(Context.User.Identity, FormsIdentity)
If Context.Request.IsAuthenticated Then
Response.Write(o.Ticket.Name)
Else
Response.Write(o.Ticket.Name) ' Object refrence ...
End If
End If
End Sub

مطمعن باشید اگه اطلاعاتی داشته باشم که کمک کنه ، نه فقط برای خودم ، برای همه دوستان میزارم.
یه نگاه به امضاء من بندازی متوجه خواهی شد.
لینک های ذکر شده ، همه مطالبی هستند که خودم مطرح کردم.ولی کسی پاسخگو نبوده ، و من بعد از پیدا کردن راه حل برای استفاده دوستان ، لینکشونو گذاشتم.

explod_javad
سه شنبه 09 تیر 1388, 12:25 عصر
من قصد دارم ، وقتی کسی وارد سایت میشه ، نام کاربری ، ای پی ، زمان مراجعه و.. را در دیتا بیس ذخیره کنم.
اگر کاربر در مراجعه قبلی لاگین کرده باشد و تیک مربوط به یاد وآوری در مراجعه قبلی را زده باشد، میخاهم نام کاربری آن ذخیره بشه ، اگر لاگین نکرده باشه ، به اسم ناشناس ذخیره بشه .

آیا راه حل دیگری وجود داره ؟

iman_22a
سه شنبه 09 تیر 1388, 13:12 عصر
من قصد دارم ، وقتی کسی وارد سایت میشه ، نام کاربری ، ای پی ، زمان مراجعه و.. را در دیتا بیس ذخیره کنم.
اگر کاربر در مراجعه قبلی لاگین کرده باشد و تیک مربوط به یاد وآوری در مراجعه قبلی را زده باشد، میخاهم نام کاربری آن ذخیره بشه ، اگر لاگین نکرده باشه ، به اسم ناشناس ذخیره بشه .

آیا راه حل دیگری وجود داره ؟

سلام دوست عزیز . منظور من کم کاری شما نبوده و نیست . من گفتم اگر مشکلی هست با همه دوستان با هم حل می کنیم . اما به نظر میرسه مشکلی نیست . فقط دنبال راه حل دیگه ای می گردید :لبخندساده:

explod_javad
سه شنبه 09 تیر 1388, 17:59 عصر
سلام دوست عزیز . منظور من کم کاری شما نبوده و نیست . من گفتم اگر مشکلی هست با همه دوستان با هم حل می کنیم . اما به نظر میرسه مشکلی نیست . فقط دنبال راه حل دیگه ای می گردید :لبخندساده:
دوست من
نمی دونم چطور بگم
بابا با این کدهایی که شما زحمتشو کشیدید ، نام کاربری که لاگین کرده رو نمی تونم بدست بیارم.
بخاطر همین میگم راه حل دیگه هست.
من از طریق کد زیر لاگین میکنم.


Dim Authticket As New FormsAuthenticationTicket(1, UserName, DateTime.Now, DateTime.Now.AddMinutes(30), RemeberMe, StrRole, _
FormsAuthentication.FormsCookiePath)
Dim hash1 As String = FormsAuthentication.Encrypt(Authticket)
Dim Authcookie As New HttpCookie(FormsAuthentication.FormsCookieName, hash1)
If Authticket.IsPersistent Then
Authcookie.Expires = Authticket.Expiration
End If
HttpContext.Current.Response.Cookies.Add(Authcooki e)

iman_22a
سه شنبه 09 تیر 1388, 18:27 عصر
کدی که من گذاشتم اگر دقت کرده باشین برای اینکه نشون بدم کار نمی کنه توی Application_Start گذاشتم . اما وقتی توی Session Start میذارم اگر کاربر قبلا لاگین کرده باشه و تیک مربوطه رو زده باشه ، کوکی رو شناسایی میکنه و اطلاعات یوزر رو از توی اون می خونه و نشون میده که کاربر لاگین کرده قبلا .

پ.ن : درضمن کدی که شما گفتین باهاش لاگین می کنین ، فقط مربوط به بخش ساختن کوکیه :چشمک:

explod_javad
سه شنبه 09 تیر 1388, 22:23 عصر
پ.ن : درضمن کدی که شما گفتین باهاش لاگین می کنین ، فقط مربوط به بخش ساختن کوکیه :چشمک:
ممنون از راهنماییت
ولی من از طریق کدی که نوشتم لاگین میکنم
امتحان کن !



Dim Authticket As New FormsAuthenticationTicket(1, "user1", DateTime.Now, DateTime.Now.AddMinutes(30), True, "", _
FormsAuthentication.FormsCookiePath)
Dim hash1 As String = FormsAuthentication.Encrypt(Authticket)
Dim Authcookie As New HttpCookie(FormsAuthentication.FormsCookieName, hash1)
If Authticket.IsPersistent Then
Authcookie.Expires = Authticket.Expiration
End If
HttpContext.Current.Response.Cookies.Add(Authcooki e)