ASP.NET CORE全局方法如何/最佳实践

问题描述 投票:0回答:1

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

谢谢您的任何反馈。

c# asp.net global
1个回答
0
投票

一种方法可能是创建扩展方法。您将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;
}

© www.soinside.com 2019 - 2024. All rights reserved.