首页 > 解决方案 > ASP.NET CORE 全局方法操作方法/最佳实践

问题描述

我是 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 Core 世界中遵循的最佳实践吗?

感谢您的任何反馈。

标签: c#asp.net-coreglobal

解决方案


一种方法是潜在地创建一个扩展方法。您不会通过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;
}


推荐阅读