2014-07-23 15 views
16

Tôi đang thiết lập IsPersistent khi đăng nhập người dùng, làm cách nào để đọc lại giá trị đó?Làm thế nào để đọc MVC OWIN AuthenticationProperties?

var identity = await UserManager.CreateIdentityAsync(appUser, DefaultAuthenticationTypes.ApplicationCookie); 
HttpContext.GetOwinContext().Authentication.SignIn(new AuthenticationProperties() { IsPersistent = false }, identity); 
+2

@MarioDS, có một lý do khiến câu hỏi này không nhận được sự chú ý. Là nó không phải là rất rõ ràng. Nhưng bỏ qua một bên, trước tiên bạn nên hiểu những gì tài sản là về. kiểm tra câu trả lời này http://stackoverflow.com/a/32052308/5233410 Trong ngắn hạn nó (tài sản) không được lưu trữ để được đọc lại. Nó chỉ hướng dẫn khuôn khổ để tạo ra một cookie. Giả sử của tôi là khi cookie có mặt thì tài sản có thể được đặt thành true, và nếu không thì sẽ sai. – Nkosi

+0

@Nkosi Tôi nhận ra rằng ngay sau khi tôi đặt tiền thưởng - không quay lại không may :). Những gì tôi thực sự muốn biết là làm thế nào để đọc các tài sản khác trở lại (đặc biệt là những người đặt trong "Từ điển" của AuthenticationProperties). – MarioDS

+0

có thể liên kết này sẽ giúp bạn. http://stackoverflow.com/questions/31946582/how-ispersistent-works-in-owin-cookie-authentication –

Trả lời

0

Vì không có nhiều mô tả, tôi không chắc chắn về ngữ cảnh. Dù sao, bạn có thể nhận được tất cả các AuthenticationProperties được cung cấp với cuộc gọi đăng nhập khi bạn thực hiện xác thực theo yêu cầu hiện tại. Mã sẽ là ..

AuthenticateResult authenticateResult = await HttpContext.GetOwinContext().Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ApplicationCookie); 

AuthenticationProperties yourAuthenticationProperties = authenticateResult.Properties; 
0

bạn có thể xin vui lòng thử điều này, tôi đã không kiểm tra nó

IAuthenticationManager AuthenticationManager 
{ 
    get { return HttpContext.GetOwinContext().Authentication; } 
} 
0

Như @Nkosi nói bạn có thể không lấy lại thông tin từ OWIN, bởi vì nó không được lưu trữ ở đó, bạn cần lấy lại chính cookie đó và phân tích cú pháp thông tin theo cách thủ công, nhưng bạn cần có một phần mềm trung gian OWIN như this one để bạn có thể thao tác cookie theo ý muốn.

0

Bạn có thể khai báo static property CookieAuthOptions nếu bạn đã định cấu hình CookieAuthOptions trong ConfigureAuth hoặc bất kỳ AuthOption nào khác cũng nên triển khai ISecureDataFormat<AuthenticationTicket> (ví dụ: OAuthBearerOptions.AccessTokenFormat). Phần này chứa các phương thức Protect & Unprotect.

Bất cứ khi nào bạn cần truy cập AuthenticationProperties, bạn phải có khả năng nắm bắt ngữ cảnh Owin để có được tham chiếu đến một vé thực hiện định dạng chính xác của bạn.

Là một bước ví dụ cơ bản,

Startup.cs => public static CookieAuthenticationOptions CookieAuthOptions; 
Startup.cs => ConfigureAuth => CookieAuthOptions.CookieName = "xxx"; 
BaseController.cs => Startup.CookieAuthOptions.TicketDataFormat.Unprotect(Request.Cookies["xxx"].Value).Properties; 

để có được những gì bạn muốn.

PS: Bạn không đề cập đến nơi bạn cần điều này và tôi cho rằng nó sẽ nằm trong bộ điều khiển.

Các vấn đề liên quan