【发布时间】:2020-11-20 05:26:27
【问题描述】:
我用谷歌搜索了这个,没有找到任何东西,所以我想知道那些使用 DotNet Core 时间比我长的人。
我现在是 DotNet 核心。我目前正在创建一个应用程序只是为了练习。我注意到,在我的大多数 API 操作中,我正在根据声明 NameIdentifier(即登录的用户 ID)验证传入的 UserId。
我就是这样做的:
if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
{
return Unauthorized();
}
但现在想想,它变得有点过于重复了。有没有办法改用属性?
类似:
[AuthorizeUser(UserId = userid)]
[HttpGet]
public async Task<IActionResult> GetSomething(int userId)
{
//Custom code ...
}
然后创建我的授权属性:
public class AuthorizeUser : AuthorizeAttribute, IAuthorizationFilter
{
public AuthorizeUser(params string[] args)
{
Args = args;
}
public string[] Args { get; }
public void OnAuthorization(AuthorizationFilterContext context)
{
//Custom code ...
}
}
这样我会在一个地方为我的所有操作检查在 "api/user/{userId}" 中传递的用户 ID。
或者还有另一种方法可以让我的代码看起来更好,并且复制和粘贴更少?
提前谢谢你。
【问题讨论】:
标签: c# .net-core asp.net-authorization api-authorization