在我们当前的系统(.net 4.5)中,为了在整个应用程序中处理用户身份验证,我们创建了自己的IIdentity
和IPrincipal
个对象。因此,在每个请求中,我们解密cookie中的属性(存储在登录时)并使用它来检查用户对象的缓存(它还为我们提供了客户端对象)。如果用户在缓存中,那么我们将HttpContextBase.User
和Thread.CurrentPrincipal
设置为我们自己的IPrincipal
版本。如果用户不在缓存中,那么我们从数据库中获取它们并设置上述内容。
这非常有效,因为我们有BaseController
有2个属性,一个用于当前用户,一个用于当前客户端。可以通过将User.Identity
投射到我们自己的IIdentity
来访问这些内容。
我们现在正在寻求将我们的应用移至.netcore,但我们不确定如何实现与上述相同,因为我们似乎无法复制它。我们目前正在使用带有ASP身份的cookie中间件(Shown Here),我们正在设置一些声明(id,name等),但我们不确定我们应该如何或在哪里检查缓存并设置一些属性在每一个请求上。