Asp.Net 5 (Mvc 6) 中的 Custom ClaimsPrincipal

mik*_*kal 5 asp.net-core-mvc asp.net-core

如何覆盖Asp.Net 5 (MVC-6) 中的默认Context.User类型System.Security.Claims.ClaimsPrincipal

我想使用我自定义的用户类型,以便它可以在控制器 ( HttpContext.User) 以及 Razor 视图 ( @User.) 中访问

任何帮助深表感谢。谢谢!:)

Mat*_*rey 1

基本的答案是不要——尝试实现自己的安全代码通常是一个坏主意;有很多选择可以为您节省大量前期时间,也可以为您省去很多后期麻烦。

另一个答案是你不能——它从一开始就内置在新框架中。

这就是 User POCO 模型的用途。身份框架就是以这种方式运行的(我认为从一开始),它反映了 OAuth 和大多数其他身份验证/授权系统。这是一个非常灵活和高效的模型。

相反,我建议您构建自己的框架,并使用框架中内置的框架ClaimTypes之外的框架。无论如何,根据您对用户进行身份验证的方式,您应该能够在创建 时添加它们。IPrincipal

  • 这是不真实的。有一个完整的部分专门用于创建您自己的身份验证方案,甚至为您提供一种使用 cookie 中间件来集成您的身份验证令牌的方法(https://docs.asp.net/en/latest/security/authentication/cookie)。 html)。身份框架非常繁重,并且附带了所有内容(角色、权限等),这通常不适合当前的系统。更不用说它的假设和缺乏对现代基于电话号码的身份验证的支持,您必须绕过框架才能实现这些身份验证等。 (5认同)