Bazen web sitesine giriş yapan kullanıcı için kullanıcı adı yanında başka verilerde tutmak isteyebiliriz. Bunu yapmanın en kolay yollarından biri FormsAuthenticationExtensions kütüphanesidir.
Nugetten indirmek için : PM> Install-Package FormsAuthenticationExtensions
1. Cookie içinde tutacağımız sınıf
public class CurrentUser { public int Id { get; set; } public string Name { get; set; } public string Email { get; set; } public string Phone { get; set; } }
2. Giriş yapmış olan kullanıcıya herhangi bir yerden ulaşmak için global bir fonksiyon tanımlıyoruz.
using FormsAuthenticationExtensions; public static class CustomMembership { public static CurrentUser CurrentUser() { var user = new CurrentUser(); try { var currentUser = HttpContext.Current.User; var ticketData = ((FormsIdentity)currentUser.Identity).Ticket.GetStructuredUserData(); user.Id = Int32.Parse(ticketData["Id"]); user.Name = currentUser.Identity.Name; user.Email = ticketData["Email"]; user.Phone= ticketData["Phone"]; } catch (Exception ex) { } return user; } }
3. Kullanıcı girişi yapıldıktan sonra cookie oluşturma
[HttpPost] public ActionResult Login(string userName, string password, bool rememberMe) { ... var user = _userService.GetUser(userName, password); // kullanıcı girişi başarılı ise // ------------------------------------------------------------------------ var ticketData = new NameValueCollection { { "Id", user.Id.ToString() }, { "UserName", user.UserName }, { "Email", user.Email }, { "Phone", user.Phone } }; new FormsAuthentication().SetAuthCookie(userName, rememberMe, ticketData); // // ------------------------------------------------------------------------- ... }
Kullanıcı girişinden sonra ekstra verileri artık cookie içinde tanımlamış olduk. Şimdi istediğimiz yerde bunu kullanabiliriz. Örnek kullanım:
var userName = CustomMembership.CurrentUser().Name; var email = CustomMembership.CurrentUser().Email; var phone = CustomMembership.CurrentUser().Phone;
Alıntıdır. Ali Rıza Adıyahşi hocamıza tsk ederiz.