我正在使用ASP.NET Core和MediatR构建应用程序/ Web API。
身份验证(Google帐户)在ASP.NET Core中完成。控制器仅是将所有工作委托给MediatR及其请求处理程序的薄层。
关于授权,目前,我的方法是,我的大多数控制器都装饰有[Authorize]属性,并且在MediatR的管道检查中(通过行为)还对相应的请求处理程序进行了验证(如果通过了行为),因此存在重复性。
我的问题是,让所有控制器都允许匿名访问并且仅在MediatR的管道中检查身份验证/授权,这是一个不好的做法吗?
我肯定需要将其保留在请求处理程序中,因为它们正在形成实际的应用程序层,并且我希望它独立于ASP.NET。同样只有这一层经过测试。
答案 0 :(得分:1)
我将授权交给控制者,但这只是一个意见。
如果您打算在没有内置授权功能的其他项目中使用处理程序,则将它们留在处理程序中。
这是一个“取决于”问题,因为它取决于您的特定情况。