15

Trong dự án Web API ASP.NET của tôi, tôi đang sử dụng mang uỷ quyền token và tôi đã thêm một số yêu cầu tùy chỉnh để nó, như thế này:Bắt giá trị khẳng định tùy chỉnh từ bearer token (Web API)

var authType = AuthConfig.OAuthOptions.AuthenticationType; 
var identity = new ClaimsIdentity(authType); 
identity.AddClaim(new Claim(ClaimTypes.Name, vm.Username)); 

// custom claim 
identity.AddClaim(new Claim("CompanyID", profile.CompanyId.ToString())); 

Is có cách nào tôi có thể truy cập vào giá trị yêu cầu bổ sung này trong bộ điều khiển mà không có thêm một chuyến đi đến cơ sở dữ liệu?

Trả lời

22

Chắc chắn, bên trong bộ điều khiển được bảo vệ của bạn, bạn làm như sau:

ClaimsPrincipal principal = Request.GetRequestContext().Principal as ClaimsPrincipal; 
var customClaimValue = principal.Claims.Where(c => c.Type == "CompanyID").Single().Value; 
+0

Làm thế nào tôi có thể tái sử dụng này một cách tập trung hơn? Tôi đang sử dụng một lớp Dịch vụ cần có nghĩa là 'customClaimValue' này. Tất cả các hành động của bộ điều khiển cần gửi giá trị này đến dịch vụ trước khi nhận/đăng dữ liệu. –

+1

Bạn có thể tạo bộ lọc tùy chỉnh chạy trước khi nhấn phương thức hành động –

+1

Cảm ơn bạn, không biết bạn có thể nhận yêu cầu hiện tại trong bộ lọc. Cũng là một blog rất hay mà bạn có, Taiseer! –

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