PDA

View Full Version : سوال: مشکل با لوگین کاربر در صفحات دیگر



khz-web1
دوشنبه 21 بهمن 1387, 07:30 صبح
سلام

من لوگین رو خودم با استفاده از کد زیر انجام میدم




Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\poyesh.ir\App_Data\db.mdb")
Dim cmd As New OleDbCommand
Dim sql As String







sql = "select count(*) from registeruser where username=? and password=?"
cmd.Connection = con
cmd.CommandText = sql
cmd.Parameters.AddWithValue("username", TextBox2.Text)
cmd.Parameters.AddWithValue("password", TextBox3.Text)
Session("username1") = TextBox2.Text

con.Open()
If cmd.ExecuteScalar = 1 Then
FormsAuthentication.RedirectFromLoginPage(TextBox2 .Text, True)

Panel1.Visible = False


Label3.Text = "خوش آمدید کاربر" & Session("username1")
' Response.Redirect("default.aspx")
ElseIf cmd.ExecuteNonQuery = 0 Then
MsgBox("نام کابری غلط است", MsgBoxStyle.OkOnly, "خطا")

con.Close()

اما به چه صورت ...
ببینید دوستان ... من اگه بخوام از Login view استفاده کنم خوب متاسفانه login view با بعضی از عناصر مشکل داره (به عنوان مثال اگر من یک textbox داخل login view بزار ، دیگه ویژوال استدیو اون textbox رو نمیشناسه ... دلیلش هم نمیدونم )

من اومدم از کنترل panel واسه ی این کار استفاده کردم ... اما به چه صورت ...
وقتی کاربر اوگین کرد (فرض بر اینکه نام کاربری و رمز عبور خود را درست وارد کرده ) پنل غیر فعال میشه و label میاد به کاربر خوش آمد گویی میگه (توجه داشته باشید که label در کنترل panel نیست زیرا که با غیر فعال شدن panel صفحه، label هم حذف می شود) و در نهایت کاربر لوگین می شود ...

اما مشکل کارمن کجاست ...
اگر توی شرط من(کد پایین) دقت کنید گفتم که در صورتی که برابر 1 بود(یعنی چنین نام کاربری موجود بود) کوکی رو ذخیره کن و پنل panel رو غیر فعال کن سپس label رو برابر با نام کاربری قرار بده ...



con.Open()
If cmd.ExecuteScalar = 1 Then
FormsAuthentication.SetAuthCookie(TextBox2.Text, True)

Panel1.Visible = False


Label3.Text = "خوش آمدید کاربر" & Session("username1")
' Response.Redirect("default.aspx")
ElseIf cmd.ExecuteNonQuery = 0 Then
MsgBox("نام کابری غلط است", MsgBoxStyle.OkOnly, "خطا")

con.Close()

خوب حالا اگه کاربر بخواهد به عنوان مثال روی لینک همین صفحه(صفحه ای که در داخل آن هستیم) کلیک کند دوباره فرم ورود کاربران ظاهر می شود ... من می خوام کدی رو بنویسم که چک کند کاربر کوکی ذخیره کرده است در سیستم یا نه(منظورم اینکه کاربر لوگین کرده با نه) ، در صورتی که کوکی در سیستم ذخیره شده است panel غیر فعال شود و پیام خوش آمد گویی به کاربر بدهد ...

دوستان اگر روش دیگری را مد نظر دارند لطفا ارائه دهند
با تشکر

Alireza Orumand
دوشنبه 21 بهمن 1387, 10:21 صبح
سلام
خوب توی شرط IF کنار cmd.ExecuteScalar = 1 شرط Request.Cookies.Get("Your Cooki Name") != null را هم اضافه کنید یعنی


if (((Request.Cookies.Get("Your Cooki Name") != null) &&
(!string.IsNullOrEmpty(Request.Cookies.Get("YourCookiName").Value.ToString())))
|| (cmd.ExecuteScalar = 1))
{
}

حالا اگه الان لاگین کنه یا اگه قبلا لاگین کرده باشه میتونه وارد بشه.
موفق باشید.

khz-web1
دوشنبه 21 بهمن 1387, 15:31 عصر
راه حل رو پیدا کردم....



If User.Identity.IsAuthenticated = TrueThen

Else

EndIf

می تونی دلیل اینکه login view این مشکل رو داره رو بگی؟

Alireza Orumand
دوشنبه 21 بهمن 1387, 16:30 عصر
سلام

می تونی دلیل اینکه login view این مشکل رو داره رو بگی؟
من هم نمیدونم چرا این مشکل رو داره ولی خودم اگه بخوام با کنترلی که داخل Login View هست کار کنم از LoginView1.Controls[0].Controls استفاده میکنم و بعد هم کنترل مورد نظر خودم رو پیدا میکنم و cast میکنم.
موفق باشید.

khz-web1
یک شنبه 27 بهمن 1387, 16:59 عصر
من از کنترل panelبرای کارم استفاده کردم... تا الان مشکلی پیش نیومده...