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