我是ASP.NET CORE框架的新手(使用3.1 btw),在我的几个页面上(每个页面都继承了PageModel类),我定义了以下方法:
private string GetSignedInUser()
{
var claimsIdentity = (ClaimsIdentity)User.Identity;
var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
var theUser = claim.Value;
return theUser;
}
我觉得在我的多个页面上复制此方法是一种不好的做法。共有11页。
我的问题是使它成为一个全局方法(即使可能)是创建一个单独的类(例如GetCurrentUser),然后在“ Startup.cs”中使用类似...的依赖注入...
services.AddScoped(GetCurrentUser)();
我对这里的理解正确吗?这是在ASP.NET世界中遵循的最佳实践吗?
谢谢您的任何反馈。
一种方法可能是创建扩展方法。您将not通过DI注入此类。
public static class UserExtensions
{
public static string GetCurrentUserName(this User user)
{
var claimsIdentity = (ClaimsIdentity)user.Identity;
var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);
return claim.Value;
}
}
它可以用作:
public async Task<IActionResult> DoSomething()
{
//do other stuff;
var currentUserName = User.GetCurrentUserName();
//do other stuff;
}