16

我有以下方法:

        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);
        }

我的问题是,如果我检查test.Identity.IsAuthenticatedis 尚未设置为 true。这只是一些测试代码来弄清楚如何。我错过了什么。

4

3 回答 3

18

您需要为构造函数指定一个ClaimsIdentity实例,该实例指定诸如“Basic”之类的构造函数。理赔可以。ClaimsPrincipalauthenticationTypenull

var principal = new ClaimsPrincipal(new ClaimsIdentity(null, "Basic"));
var isAuthenticated = principal.Identity.IsAuthenticated; // true
于 2016-10-13T14:38:35.103 回答
14

You need to set an authentication type in the ClaimsIdentity ctor.

于 2013-07-02T16:49:10.157 回答
3
        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);
于 2013-07-02T16:49:07.110 回答