11-22-2012، 09:24 AM
سلام.
مسئله اينه فرضاً يه کاربر با اسم کاربري a وارد ميشه بدون اينکه خروج رو بزنه يه نام کاربري ديگه رو در لوگين وارد ميکنه و مي تونه وارد بشه به من گفتن نبايد اين اتفاق بيفته.
در واقع من مي خوام اگه کاربر هنوز خارج نشده بود و خواست با يه نام کاربري ديگه لوگين کنه بهش پيغام بده که ابتدا خارج شويد و سپس با نام کاربري جديد لوگين کنيد.
ممنون ميشم راهنمايي کنيد چطور ميشه اين مشکل رو حل کرد؟
يه مسئله ديگه اينه که وقتي کاربر خروج رو زد و دکمه back براوزر رو مي زنه نمي دونم چرا وقتي بار اول بک مي زنه اون رو به عنوان کاربر ميهمان تشخيص مي ده ولي بار دوم با نام کاربريش بهش خوش آمد ميگه که اينم لطف کنيد بگيد چه کار کنم تا اين اتفاق نيفته؟
کدهاي دکمه لوگين
کدهايي که در global.asax نوشتم
و کدي که در web.config نوشتم و به اين مسئله مربوط ميشه
ممنون.
مسئله اينه فرضاً يه کاربر با اسم کاربري a وارد ميشه بدون اينکه خروج رو بزنه يه نام کاربري ديگه رو در لوگين وارد ميکنه و مي تونه وارد بشه به من گفتن نبايد اين اتفاق بيفته.
در واقع من مي خوام اگه کاربر هنوز خارج نشده بود و خواست با يه نام کاربري ديگه لوگين کنه بهش پيغام بده که ابتدا خارج شويد و سپس با نام کاربري جديد لوگين کنيد.
ممنون ميشم راهنمايي کنيد چطور ميشه اين مشکل رو حل کرد؟
يه مسئله ديگه اينه که وقتي کاربر خروج رو زد و دکمه back براوزر رو مي زنه نمي دونم چرا وقتي بار اول بک مي زنه اون رو به عنوان کاربر ميهمان تشخيص مي ده ولي بار دوم با نام کاربريش بهش خوش آمد ميگه که اينم لطف کنيد بگيد چه کار کنم تا اين اتفاق نيفته؟
کدهاي دکمه لوگين
کد:
if (GetMemberAuthenticate(txt_uname.Text, FormsAuthentication.HashPasswordForStoringInConfigFile(txt_pass.Text, "MD5")))
{
string role = GetMemberRoleByID(txt_uname.Text);
DateTime expiration;
if (chk_rememberme.Checked)
{
expiration = DateTime.Now.AddMonths(1);
}
else
{
expiration = DateTime.Now.AddMinutes(30);
}
FormsAuthenticationTicket AuthTicket = new FormsAuthenticationTicket(1, txt_uname.Text, DateTime.Now, expiration, false, role);
string encryptedTicket = FormsAuthentication.Encrypt(AuthTicket);
HttpCookie AuthCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(AuthCookie);
string[] temp = role.Split(',');
for (int i = 0; i < temp.Length; i++)
{
if (temp[i]=="Admin")
{
Response.Redirect("AdminPage.aspx");
}
}
Response.Redirect(FormsAuthentication.GetRedirectUrl(txt_uname.Text, chk_rememberme.Checked));
}
else
{
lbl_login.Visible = true;
}
کد:
HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName.ToString()];
if (authCookie != null)
{
FormsAuthenticationTicket MyTicket;
MyTicket = FormsAuthentication.Decrypt(authCookie.Value);
FormsIdentity MyIdentity = new FormsIdentity(MyTicket);
GenericPrincipal MyPrincipal = new GenericPrincipal(MyIdentity, MyTicket.UserData.Split(new char[] { ',' }));
Context.User = MyPrincipal;
}
کد:
<authentication mode="Forms">
<forms loginUrl="Default.aspx" defaultUrl="~/"></forms>
</authentication>