2013-07-02 21 views
6

tôi có phương pháp sau đây:Cách tạo ClaimsPrincipal có Identity.Authenticated được đặt thành true?

 protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) 
     { 
      if (Composite.C1Console.Security.UserValidationFacade.IsLoggedIn()) 
       SetPrincipal(request, new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Role, "Administrator") },))); 
      var test = request.GetClaimsPrincipal(); 
      return base.SendAsync(request, cancellationToken); 
     } 

vấn đề của tôi là nếu tôi kiểm tra việc test.Identity.IsAuthenticated là chưa được thiết lập là true. Đây chỉ là một số mã thử nghiệm để tìm ra cách. Tôi đang thiếu gì.

Trả lời

7

Bạn cần đặt loại xác thực trong ctor ClaimsIdentity.

+0

figured it out 5min ago: D Thanks –

0
 if (Composite.C1Console.Security.UserValidationFacade.IsLoggedIn()) 
      SetPrincipal(request, new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { 
       new Claim(ClaimTypes.Role, "Administrator"), 
       new Claim(ClaimTypes.NameIdentifier, UserValidationFacade.GetUsername())}, "Basic"))); 
     var test = request.GetClaimsPrincipal(); 
     return base.SendAsync(request, cancellationToken); 
2

Bạn cần chỉ định trường hợp ClaimsIdentity cho hàm tạo ClaimsPrincipal chỉ định authenticationType chẳng hạn như "Cơ bản". Khiếu nại có thể là null.

var principal = new ClaimsPrincipal(new ClaimsIdentity(null, "Basic")); 
var isAuthenticated = principal.Identity.IsAuthenticated; // true 
Các vấn đề liên quan