[英]User.Identity.Name returns null in ASP.NET Core MVC application
[英]Session vs User.Identity.Name to check the loggeduser name for ASP.net core application with windows authentication
我必须从数据库中获取用户ID,才能执行应用程序中的大多数功能。 我有启用Windows身份验证的.net core 2.1应用程序。
我的问题是一种有效的方法,是请求User.Identity.Name
检查记录的用户名并获取用户ID(使用db查询)还是第一次从User.Identity.Name
获取用户名,查询ID并将其分配给会话,并将ID用于后续请求。
User user = new User(xDbContext);
if ((HttpContext.Session.GetInt32("CurrentUserId") == null))
{
loggedUserId = userPrivilege.GetUserId(User.Identity.Name);
HttpContext.Session.SetInt32("CurrentUserId", loggedUserId);
}
else
{
loggedUserId = HttpContext.Session.GetInt32("CurrentUserId").Value;
}
如果您询问是否应该:
Session
以便下次需要它时使用 答案是:这取决于。 如果您的Session
数据存储在其他服务器上的数据库中,则不会有任何变化。 如果您的数据库与站点在同一台服务器上运行,那么差别将很小。
如果您的数据库位于其他服务器上,并且Session
存储在内存中,那么从Session
检索值将更快。
如果您的Session
数据存储在数据库中,那么另一种选择是使用内存缓存 。 但是这些数据将在所有会话之间共享,因此您必须确保不会在其他人的请求中访问一个人的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.