Missing ClaimsPrincipal in ViewComponents

Published on 18 January 2018

I was creating a couple of ViewComponents this evening in aspnet core and needed access to the ClaimsPrincipal of the current logged in user. Like the MVC Controller I was expecting the User property of the base class to be a ClaimsPrincipal however I was wrong and it was only a IPrincipal.

Was this a bug? Had I missed something? Did I really need to cast User to being a ClaimsPrincipal?

No, it was in fact an issue which had been raised in the aspnet Mvc Github repository a while back and fixed.

So where is it? It's in the UserClaimsPrincipal property obviously!

    /// <summary>
    /// Gets the <see cref="IPrincipal"/> for the current user.
    /// </summary>
    public IPrincipal User => ViewContext?.HttpContext?.User;

    /// <summary>
    /// Gets the <see cref="ClaimsPrincipal"/> for the current user.
    /// </summary>
    public ClaimsPrincipal UserClaimsPrincipal => ViewContext?.HttpContext?.User;

Any questions/comments then please contact me on Twitter @WestDiscGolf