2012-04-27 17 views
7

Trong ASP.NET (MVC và WebAPI), đối tượng User Identity được khởi tạo với dữ liệu từ cookie FormsAuthentication như thế nào?Nhận dạng người dùng | Thiết lập chính trong suốt vòng đời của ứng dụng

Điều tôi muốn làm là sử dụng 2 loại xác thực, dựa trên cookie và tiêu đề tùy chỉnh dựa trên tiêu đề. Vì lớp AuthorizeAttribute chỉ kiểm tra phương thức User.Identity.IsAuthorized() và không sử dụng mã cụ thể cho FormsAuthentication, điều đó có nghĩa là tất cả những gì tôi phải làm là thiết lập đối tượng User.Identity theo cách thủ công, cho dù trong global.asax hoặc trong DelegatingHandler.

Vì vậy, làm cách nào để thiết lập User.Identity? Làm thế nào để khuôn khổ tự động thiết lập nó bằng cách sử dụng FormsAuthentication?

Trả lời

1

Đây là related answer.

Danh tính có thể được đặt trong trình xử lý, trong mô-đun hoặc trong Global.asax. Bạn có thể sửa đổi nó tại bất kỳ điểm nào trong vòng đời yêu cầu, nhưng thường là nơi tốt nhất để làm điều đó là trong PostAuthenticateRequest. Tại thời điểm này, FormsAuthentication đã thực hiện công việc của nó và bạn có thể tăng thêm hoặc thay thế HttpContext.Current.User.

+1

Dựa trên những gì Aliostad đã nói, khi tôi thiết lập danh tính, nếu họ thêm 'User.Controller', danh tính sẽ chuyển sang điều đó? –

0

Bộ điều khiển ASP.NET MVC có Controller.User nhưng Web API không có. Hiện tại là requested để được đặt.

+1

Tôi có thể làm: 'HttpContext.Current.User' –

+0

@Lolcoder Đó không phải là tuyệt vời. Nó là một hang-over từ các khu vực lưu trữ tĩnh/thread ngày của quá khứ. ** Nó không thể được kiểm tra đơn vị **. – Aliostad

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