ورود

View Full Version : نکهداری session برای کاربر لاگین شده



leilast
یک شنبه 19 شهریور 1396, 21:35 عصر
من از لاگین به روش membership استفاده کردم.
میخوام سشن کاربر رو در layout یا در صفحات دیگه نگه دارم. و همینطور اگر کاربر لاگین کرده گزینه logout هم براش نمایش داده بشه.
اما بعد از لاگین سشن ایجاد نمیشه. (و بدنبال اون layout)
از این دو دستور استفاده میکنم اما مقدارش بعد از لاگین null هست.

برای نشان دادن نام کاربر لاگین شده

@User.Identity.Name


برای نمایش logout به کاربر


@if (User.Identity.IsAuthenticated)
{


<a href="/Home/Logout" class="btn btn-default btn-flat">خروج از سایت</a>


}


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

این هم کدهای کنترلر (اگه لازم شد)

[HttpGet]
public ActionResult Login()
{
return View();
}


[HttpPost]
public ActionResult Login(string username,string password,bool rememberme)
{
if (BlUser.Exist(username, password))
{
FormsAuthentication.SetAuthCookie(username,remembe rme);
return RedirectToAction("Index");
}
else
{
ViewBag.message = "نام کاربری یا پسورد اشتباه است";
}
return View();
}


public ActionResult Logout()
{
FormsAuthentication.SignOut();
return RedirectToAction("Index");

}

itshine
یک شنبه 19 شهریور 1396, 22:38 عصر
سلام. برای نگهداری داده بهتره از سشن استفاده نکنید چون در سرور سربار زیادی ایجاد می کنه و ضمن اینکه در تعداد کاربر بالا قاطی میکنه خصوصا اگه محدودیت رم سرور داشته باشید.
بهتره کاربری که احراز هویت شده رو کلید جدول یوزر رو در FormsAuthentication.SetAuthCookie(username,remembe rme); قرار بدید .
ضمن اینکه برای گرفتن نام کاربر لاگین شده میتونید با دستور
user.identity.name کلیدش رو بگیرید و یه select ساده به جدول یوزرتون بزنید . به راحتی میتونید اطلاعاتش رو بگیرید.

موفق باشید

leilast
دوشنبه 20 شهریور 1396, 09:39 صبح
کد خودم درست شد. ولی متوجه نشدم شما چی گفتید. اگر تونستید لینکی در موردش بذارید ممنون میشم.