یه همچین کلاسی مثل چیزی که تو زیره بسازید و هر وقت کسی خواست لاگین کرد پاسش بدید به این کلاس:
public void SetAuthenticationToken(string name, bool isPersistant, User userData)
{
string data = null;
if (userData != null)
data = new JavaScriptSerializer().Serialize(userData);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, name, DateTime.Now, DateTime.Now.AddYears(1), isPersistant, userData.UserId.ToString());
string cookieData = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieData)
{
HttpOnly = true,
Expires = ticket.Expiration
};
HttpContext.Current.Response.Cookies.Add(cookie);
}
بعد تو اکشن لاگین بنویسید:
var authenticatedUser = userApp.GetUserByEmailAndPassword(user);
if (authenticatedUser != null)
{
context.SetAuthenticationToken(authenticatedUser.E mail, false, authenticatedUser);
return RedirectToAction("Index");
}
که تو خط اول می خونم ببینم همچین کاربری وجود داره یا نه که اگه داشت میفرستمش تو اون کلاسه که براش کوکی بسازه.
بعد هر جا بخواید دیگه می تونید با کلمه ی کلیدی User کاربر رو از کوکی بخ.نید.اطلاعاتی مثل اینکه این کاربر الان لاگین هستش یا نه (User.Identity.IsAuthenticated) یا چیزایی مثل نام طرف(User.Identity.Name)(که می تونید به جای نام UserId) طرف رو تو این متغیر بریزید و...
که البته راهش اینه که یه متد استاتیک داشته باشید که تمام اطلاعات کاربر لاگین کرده رو (کاربر لاگین کرده رو همونطور که خط بالا گفتم می تونید پیداش کنید) از دیتابیس بخونه و هر جا خواستید این تابع مفید رو صدا بزنید.از تابع استفاده کنید و باهاش کار کنید خودتون متوجه می شید.