2013-07-02 15 views
6

Mam następujący sposób:Jak utworzyć obiekt ClaimsPrincipal, który ma Identity.Authenticated, ustawiono wartość 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); 
     } 

mój problem jest, że jeśli kontrolującej test.Identity.IsAuthenticated jest nie została ustawiona na wartość true. To tylko kilka kodu testowego, aby dowiedzieć się, jak. Czego mi brakuje.

Odpowiedz

7

Musisz ustawić typ uwierzytelniania w ctor ClaimsIdentity.

+0

wymyślił to 5 minut temu: D Dzięki –

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

Należy podać instancję ClaimsIdentity do konstruktora ClaimsPrincipal, która określa authenticationType, np. "Basic". Roszczenia mogą być następujące: null.

var principal = new ClaimsPrincipal(new ClaimsIdentity(null, "Basic")); 
var isAuthenticated = principal.Identity.IsAuthenticated; // true 
Powiązane problemy