c# - 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 世界中遵循的最佳实践吗?
感谢您的任何反馈。
解决方案
一种方法是潜在地创建一个扩展方法。您不会通过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;
}
推荐阅读
- quasar-framework - 叶子和严格的q-treetick策略组合?
- r - 车包Anova“下标越界”
- javascript - 如何跟踪和收集特定字段的所有使用过的依赖 JavaScript
- c - 输入两个字符串a和b,请计算b在a中出现的次数
- javascript - 如何使用表格标题的弹出窗口中的按钮对表格进行排序
- ios - Xcode cocoa pods pod install Sentry 导致“找不到模块'Sentry'”
- excel - 使用 Powershell 删除包含特定字符的 .CSV 文件中的行
- ios - 获取请求不会迅速执行,在请求中传递 URL 时出现 nil 值错误
- go - 如何从根 URL 提供静态文件
- firebase - 参数类型“对象?Function()' 不能分配给参数类型'Map
'