PDA

View Full Version : مشکل در لاگین



sunn789
سه شنبه 16 اسفند 1390, 23:10 عصر
سلام

از مطالب تشخیص هویت سایت how2learnasp.net استفاده کردم به یک مشکل برخوردم

اول اینکه یک پوشه توی پروژه درست کردم اسمش رو گذاشتم CP

خوب کدهای وب کانفیگ رو هم اینجوری نوشتم

<system.web>
<authentication mode="Forms">
<forms name="NovinCook" loginUrl="~/CP/Login.aspx" protection="All" defaultUrl="Default.aspx" timeout="2880" />
</authentication>

</system.web>
<location path="cp">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>

اول اینکه زمانی روی کامپیوتر اجرا میکنم و به هر page توی cp میرم وارد صفحه Login میشه که این همون تنظیماتی است که توی وب کانفیگ گذاشتیم اما مشکل اینه که زمانی نام کاربری و کلمه عبور رو وارد میکنم هیچ خطایی دریافت نمیکنم اما توی همون صفحه لوگین میمونم نمیدونم چرا
این هم کد سی شارپ
var user = (from u in db.tblUsers
where u.Password == TextBox2.Text
select u).FirstOrDefault();

if (user!= null)
{
FormsAuthentication.RedirectFromLoginPage(TextBox1 .Text,false);

}
مشکل دوم اینه که زمانی اون رو اپلود میکنم این مشکل بر میخورم
www.novindates.com/cp

متشکر میشم در هر دو مورد کمک کنید

alibabaei2
چهارشنبه 17 اسفند 1390, 01:47 صبح
با سلام
در web.config اصلی سایت که در روت سایت است این کد رو بنویسید
<system.web>
<authentication mode="Forms">
<forms name="NovinCook" loginUrl="~/Login.aspx" protection="All" defaultUrl="~/Default.aspx" timeout="2880" />
</authentication>

</system.web>





بعد در فولدری که می خواهید از اون محافظت کنید یک web.config اضافه کنید درون اون هم کد زیر را اضافه کنید

<system.web>
<authorization>
<deny users="?" />
</authorization>




پارامتر defaultUrl که در web.config روت سایت مقدار default.aspx رو بهش دادید به این منظور استفاده میشه که کاربر بعد از لاگین شدن به اون صفحه بره اما گویا شما این صفحه رو ایجاد نکردید به همین خاطر درون همون صفحه لاگین می مونه .
در ضمن بهتر است که صفحه لاگین در روت سایت باشه نه در فولدری که می خواید از اون محافظت کنید

sunn789
چهارشنبه 17 اسفند 1390, 09:58 صبح
سلام
در مورد

loginUrl="~/Login.aspx"
زمانی که به web.config اضافه میکنیم و برنامه رو روی کامپیوتر خودم اجرا میکنیم برام مشکل میگیره.

Mohammadvb6
چهارشنبه 17 اسفند 1390, 13:32 عصر
سلام .

چون این صفحه(login.aspx) رو گذاشتی توی فولدر cp (همون فولدری که می خوای براش سطح دسترسی تعریف کنی )

باید این صفحه رو بذاری توی root اصلی سایت

raha6631
چهارشنبه 17 اسفند 1390, 16:33 عصر
سلام
من از کدهایی که در همین سایت برای لاگین داده شده بود استفاده کردم
ولی در اجرا چه من نام کاربری و یوزرمو درست بدم چه غلط هیچ فرقی نمیکنه صفحه لاگین رفرش شده و دوباره نمایش داده میشود
string text = "Data Source=(local);Initial Catalog=userinfo;Integrated Security=True;";
SqlConnection scon = new SqlConnection(text);
SqlCommand scom1 = new SqlCommand("SELECT COUNT(*) FROM info WHERE(username='" + username_txt.Text + "' AND pass='" + password_txt.Text + "')", scon);
scon.Open();
scom1.ExecuteNonQuery();
int num =(int)scom1.ExecuteScalar();
if (num == 0)
{

Response.Redirect("login.aspx");
}
else
{
Response.Redirect("well.aspx");


}

sara_aryanfar
چهارشنبه 17 اسفند 1390, 17:15 عصر
دوست گرامی شما چرا از کنترل های خود دات نت استفاده نمی کنید برای این منظور وقتی خود دات نت کنترل مناسبی داره برای لاگین بهتره از اون استفاده کنیم

sunn789
چهارشنبه 17 اسفند 1390, 22:15 عصر
دوست گرامی شما چرا از کنترل های خود دات نت استفاده نمی کنید برای این منظور وقتی خود دات نت کنترل مناسبی داره برای لاگین بهتره از اون استفاده کنیم
صحبت شما درست اما ادرس یه مقاله کامل در مورد این کنترلها و معماریشون ایا سراغ دارید؟

raha6631
پنج شنبه 18 اسفند 1390, 11:11 صبح
پس لطفا یه سایتی معرفی کنید که کنتر لاگین خود دا نت رو توضیح داده باشه

hobab-theme
پنج شنبه 18 اسفند 1390, 15:06 عصر
1) آدرسی که گذاشتید ظاهرا تنظیمات مربوط به صفحه لاگ این صحیح نیست. یا صفحه مذکور وجود نداره.
2) طبق گفته دوست خوبم صفحه لاگ این رو تو روت اصلی سایتتون قرار بدید.
3) بعد از بررسی وجود نام کاربری و کلمه عبور از پایگاه داده، برای اطمینان از وجود این مقادیر ابتدا عدد بازگشتی کوئری را به صورت آزمایشی بر روی صفحه چاپ کنید (بدون در نظر گرفتن بقیه مسائل) ببینید خالی یا 0 نباشه. چون ممکنه اصلا از این باشه و نام کاربری یا کلمه عبور رو غلط تشخیص بده و به همین خاطر توی صفحه لاگ این میمونه

sunn789
چهارشنبه 24 اسفند 1390, 16:15 عصر
سلام
صفحه اگین رو در روت قرار دادم که باعث شد قابل دیدن باشه اما مشکل اینکه بعد از زدن نام کاربری و کلمه عبور ورد هیچ صفحه ا نمیشه ، هم توی پوشه cp یک default دارم و هم توی روت اما باز هم زمانی که نام کاربری و کلمه عبور رو میزنم باز هم به هیچ صفحه ای وارد نمیشه
usernae : Admin

sunn789
چهارشنبه 24 اسفند 1390, 16:20 عصر
با سلام
در مورد صفحه لوگین او رو توی روت قرار دادم و یک فایل وب کانفیگ هم در پوشه cp گذاشتم ، یه صفحه default هم در پوشه cp دارم و هم در روت پروژه اما الان زمانی که نام کاربری و کلمه عبور رو میزنم باز هم توی همون صفحه میمیونه
نام کاربری :admin کلمه عبور : admin
<system.web>
<authentication mode="Forms">
<forms name="NovinCook" loginUrl="/Login.aspx" protection="All" defaultUrl="cp/Default.aspx" timeout="2880" />
</authentication>
میشه یه سر به ادرس بزنید و راه حل مشکل رو بفرمایید؟
www.novindates.com/cp


protected void btn_Login_Click(object sender, EventArgs e)
{
var user = (from u in db.tblUsers
where u.Name == txt_UserName.Text && u.Password == txt_pass.Text
select u).FirstOrDefault();

if (user != null)
{
FormsAuthentication.RedirectFromLoginPage(txt_User Name.Text, false);

}
}

sunn789
جمعه 26 اسفند 1390, 02:11 صبح
هنوز راه حلی پیدا نکردم

Pejvak
دوشنبه 29 اسفند 1390, 09:20 صبح
با سلام در خصوص مشکل دوم رویداد 'Button1_Click' را فراخوانی کردید ولی کامل نکردید. لطفا از متن برنامه حذف کنید.

sunn789
پنج شنبه 03 فروردین 1391, 19:07 عصر
با سلام در خصوص مشکل دوم رویداد 'Button1_Click' را فراخوانی کردید ولی کامل نکردید. لطفا از متن برنامه حذف کنید.
میشه کمک کنید بفرمایید چه جوری کاملش کنم؟

sunn789
شنبه 23 اردیبهشت 1391, 23:32 عصر
با سلام دوستان یه مدت به دلیل مشکلات برنامه نویسی رو کمرنگ تر داشتم در کار هام .
امام مشکلی که گفتم هنوز دارم میشه کمک کنید
www.novindates.com/cp
username ="admin"
pass="admin"
کد های web.config در پوشه cp
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>

کد پشت صفحه login که صفحه لوگین در روت سایت هست نه در پوشه cp
protected void btn_Login_Click(object sender, EventArgs e)
{
var user = (from u in db.tblUsers
where u.Name == txt_UserName.Text && u.Password == txt_pass.Text
select u).FirstOrDefault();

if (user != null)
{
Response.Redirect("/cp/default.aspx");

}
}
البته قبلش نوشته بودم
protected void btn_Login_Click(object sender, EventArgs e)
{
var user = (from u in db.tblUsers
where u.Name == txt_UserName.Text && u.Password == txt_pass.Text
select u).FirstOrDefault();

if (user != null)
{
FormsAuthentication.RedirectFromLoginPage(txt_User Name.Text, false);

}
}
ولی باز هم جواب نداد
البته تو local جواب میده

متشکر

fakhravari
یک شنبه 24 اردیبهشت 1391, 10:46 صبح
یه روش دیگر هم هست
private string GetMemberRoleByID(string UID)
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["ConnectionString1"].ConnectionString))
{
SqlCommand cmd = new SqlCommand("select roles from tbl_members where uid=@uid", con);
cmd.Parameters.AddWithValue("@uid", SqlDbType.Int).Value = UID;
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
string RetVal = "NA";
if (dr.Read())
{
RetVal = dr["Roles"].ToString();
}


con.Close();
return RetVal;
}
}
private bool GetMemberAuthenticate(string UID, string PWD)
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["ConnectionString1"].ConnectionString))
{
bool RetVal = false;
SqlCommand cmd = new SqlCommand("select count(*) from tbl_members where (uid=@uid And Pwd=@Pwd)", con);
cmd.Parameters.AddWithValue("uid", SqlDbType.Int).Value = UID;
cmd.Parameters.AddWithValue("Pwd", SqlDbType.NVarChar).Value = PWD;
con.Open();
RetVal = Convert.ToBoolean(cmd.ExecuteScalar());
con.Close();
return RetVal;
}
}

protected void Button1_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
Response.Redirect("Default2.aspx");
}
فایل گلوبال
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpContext ctx = HttpContext.Current;
if (ctx.Request.IsAuthenticated)
{
Page p = ctx.Handler as Page;
if (p != null)
{
p.ViewStateUserKey = ctx.User.Identity.Name;
}
}
}


protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName.ToString()];
if (authCookie != null)
{
FormsAuthenticationTicket MyTicket;
MyTicket = FormsAuthentication.Decrypt(authCookie.Value);
FormsIdentity MyIdentity = new FormsIdentity(MyTicket);
System.Security.Principal.GenericPrincipal MyPrincipal = new System.Security.Principal.GenericPrincipal(MyIdent ity, MyTicket.UserData.Split(new char[] { ',' }));
Context.User = MyPrincipal;
}

}

protected void btn_submit_Click(object sender, EventArgs e)
{
if (GetMemberAuthenticate(txt_uid.Text, txt_pwd.Text))
{
string role = GetMemberRoleByID(txt_uid.Text);
FormsAuthenticationTicket AuthTicket = new FormsAuthenticationTicket(1, txt_uid.Text, DateTime.Now, DateTime.Now.AddHours(1), false, role);
string encryptedTicket = FormsAuthentication.Encrypt(AuthTicket);
HttpCookie AuthCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(AuthCookie);

Response.Redirect("Default.aspx");
}
else
{
lbl.Visible = true;
}
}



<location path="testing/a">
<system.web>
<authorization>
<allow roles="admin" />
<deny roles="user" />
<deny roles="power" />
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="testing/b">
<system.web>
<authorization>

<allow roles="admin" />
<allow roles="power" />
<deny roles="user" />
<deny users="?"/>

</authorization>
</system.web>
</location>
<location path="testing/c">
<system.web>
<authorization>
<allow roles="admin" />
<allow roles="power" />
<allow roles="user" />
<deny users="?" />
</authorization>
</system.web>
</location>

sunn789
دوشنبه 25 اردیبهشت 1391, 00:30 صبح
میشه کمک کنید با استفاده از dataentity model?