【发布时间】:2022-11-11 10:31:37
【问题描述】:
我想在执行控制器操作之前授权用户。在每个动作中,都有重复的代码行。
有没有一种方法可以让我能够在ControllerBase 中授权用户?
例如,我想有一个CustomControllerBase 将授权逻辑放在那里:
public class CustomBaseController : ControllerBase {
// authorization logic
}
然后控制器继承自CustomBaseController
public class FooController : CustomBaseController {
}
这是我授权用户的方式:
var userItem = dbService.GetAuthorizedUser(User) // ClaimsPrincipal
if (userItem == null) return Unauthorized(ResponseMessage.UnAuthorized);
前 2 行代码在每个操作中运行。
【问题讨论】:
-
我只能推测为什么有人投了反对票。我猜这是因为 ASP.NET (Core) 确实内置了 authentication and authorisation 机制。
-
@dropoutcoder,正如我所说,我想删除重复的代码行
-
正如我试图解释的那样。有内置的机制应该用来做你想做的事。我从未见过直接在控制器类中使用安全性。您可能想改写问题或添加更多代码。
-
@dropoutcoder,我提供了更多细节。
-
我知道您要做什么,但这应该完全在其他地方完成。让我把它写下来作为答案。
标签: c# asp.net-core .net-core controller