PDA

View Full Version : کدام کاربر login کرده؟



archi
پنج شنبه 11 فروردین 1384, 18:49 عصر
من یک برنامه بر اساس FormsAuthentication نوشتم . و کاربران غبر معتبر نمی تونند Login کنند ولی مشکل اینه که من نمی دونم به نام کاربر Login کرده چه جوری دسترسی پیدا کنم؟ داخل کوکی که مقدارش رمز شده .
ممنون

aidinwashere
پنج شنبه 11 فروردین 1384, 20:36 عصر
اون لحظه که با موفقیت وارد میشه چی؟
اون موقع یه بلایی سرش بیار.

Pooya_sh
پنج شنبه 11 فروردین 1384, 20:45 عصر
سلام
مگر شما نام کاربری و گذر واژه را با اطلاعاتی که احتمالا در پایگاه داده تان دارید مقایسه نمی کنید؟
اگر اینجوره که بعد از ورود موفقیت آمیز نام کاربری را در یک متغیر session نگه دار.چه لزومی هست که به کوکی دسترسی پیدا کنی؟؟ :گیج:

Behrouz_Rad
پنج شنبه 11 فروردین 1384, 22:17 عصر
به راحتی مقادیر کوکی کها قابل خواندن و نوشتن هستند:
نوشتن:


Sub Button_Click( s As Object, e As EventArgs )
Dim objCookie As HttpCookie
objCookie = New HttpCookie( "MyCookieName", "MyCookieValue" )
Response.Cookies.Add( objCookie )
End Sub

خواندن:


Response.Write( Request.Cookies( "MyCookie" ).Value )


خدمت آقای Pooya_sh هم عرض کنم که اگر از کوکی ها استفاده نشه، پس از هر بار خروج کاربر از سایت و ورود مجدد، نیاز به لوگین هست.
مثل همین کاری که در سایت برنامه نویس در هنگام لوگین انجام میشه و با انتخاب چک باکس ورود خودکار در بازدید های بعدی، در دفعات بعد نیاز به عمل لوگین ندارید.
موفق باشید.

archi
پنج شنبه 11 فروردین 1384, 23:50 عصر
آقای راد عزیز احتمالا منظور من رو ملتفت نشده اید
وقتی از FormsAuthentication استفاده می کنیم حتما یک کوکی داریم که نام آن در web.config در تگ form مشخص شده و داخل آن یک مقدار Encrypt شده (که من نمی دونم چیه) ریخته میشه .
حالا آیا این راه حل (که میگید)درست است که ما یک کوکی دیگر درست کنیم؟ با همون کوکی نمیشه کار رو راه انداخت؟
آقای pooya _s ممنون ولی راهی که میگید دفعه بعدی که کاربر لاگین کرد به درد نمی خوره چون session قبلی از دست رفته . (دفعه بعد از روی همون کوکی فوق الذکر معتبر بودن کاربر سنجیده میشود و دیگه لاگین لازم نیست ولی خوب این یوزر رو چه جوری میشه تشخیص داد؟؟)
:(

Behrouz_Rad
جمعه 12 فروردین 1384, 01:05 صبح
آقای archi بنده منظور شما رو متوجه شدم و بهتون جواب صحیح رو دادم.
توضیحات بیشتر:
کوکی که بنده ساختم، از تنظیمات موجود در Web.Config استفاده می کنه.
به کد زیر دقت کنید:


Dim tkt As FormsAuthenticationTicket
Dim cookiestr As String
Dim ck As HttpCookie

tkt = New FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now(), _
DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data")
cookiestr = FormsAuthentication.Encrypt(tkt)
ck = New HttpCookie(FormsAuthentication.FormsCookieName(), cookiestr)
If (chkPersistCookie.Checked) Then ck.Expires = tkt.Expiration
ck.Path = FormsAuthentication.FormsCookiePath()
Response.Cookies.Add(ck)

در کد فوق، مسیر ایجاد کوکی و نام کوکی (که به ظور پیش فرض، .ASPXAUTH هست) از فایل Web.Config خونده میشه.
کوکی نیز کدگذاری شده که فقط کافیه متد FormsAuthentication.Decrypt(MyCookie) رو برای از حالت رمز در آوردن فراخونی کنید.
موفق باشید.
:wise1: