2011-10-29 42 views
10

Tôi cần chỉnh sửa userdata trong một AuthCookie FormsAuthentication của người dùng hiện đã đăng nhập. Tôi không thấy làm thế nào để tìm hiểu xem người dùng hiện tại đã chọn một cookie liên tục ("Remember Me").Kiểm tra xem người dùng hiện đã đăng nhập có tự động liên tục không

//user is already logged in... 

HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, ispersistant); //how to I determine 'ispersistant'? 

FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); 

FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, NEWuserdata); 

authCookie.Value = FormsAuthentication.Encrypt(newTicket); 

HttpContext.Current.Response.SetCookie(authCookie); 

Bất kỳ ai có ý tưởng nào? Cảm ơn

Trả lời

7

Phương thức FormsAuthentication.GetAuthCookie chỉ tạo cookie mới. Nó không giúp bạn có được cookie được tạo trước đó.

Trên trang đăng nhập của bạn, bạn có thể có một cái gì đó như thế này:

FormsAuthentication.GetAuthCookie (userID, chkPersistCookie.Checked) 

Và để biết khi nào người dùng được xác thực bạn có thể làm

this.Context.User.Identity.IsAuthenticated 

Tôi thực sự không biết chắc chắn nếu bạn có thể suy ra thực tế là người dùng có cookie xác thực lâu dài. Có một điều đang kiểm tra cookie cho một ngày hết hạn.

Trong số này question có một ví dụ để đọc cookie xác thực.

2

Tôi đã lưu trữ "ispersistant" trong thuộc tính userdata của authcookie khi đăng nhập.

6

Điều này sẽ truy xuất cookie biểu mẫu xác thực hiện có, kiểm tra vé và cho biết liệu nó có liên tục hay không.

 var FormsAuthCookie = Response.Cookies[FormsAuthentication.FormsCookieName]; 
     var ExistingTicket = FormsAuthentication.Decrypt(FormsAuthCookie.Value); 
     bool IsPersistent = ExistingTicket.IsPersistent; 
Các vấn đề liên quan