【发布时间】:2018-08-13 07:28:00
【问题描述】:
我正在使用 ASP.NET Core 和 MediatR 构建应用程序/Web API。
身份验证(Google 帐户)在 ASP.NET Core 中完成。控制器只创建一个薄层,将所有工作委托给 MediatR 及其请求处理程序。
关于授权,目前,我的方法是,如果用户已通过身份验证,我的大多数控制器都装饰有 [Authorize] 属性以及 MediatR 管道检查(通过行为)中的相应请求处理程序,因此存在重复性。
我的问题是,让所有控制器都允许匿名访问并且只检查 MediatR 管道中的身份验证/授权是否是一种不好的做法?
当然,我需要将它保存在请求处理程序中,因为它们正在形成实际的应用程序层,并且我希望它独立于 ASP.NET。也只测试了这一层。
【问题讨论】:
-
如果你的代码只从控制器调用,为什么你需要 [Auth] 低层中的任何东西(例如 mediatr 处理程序)
-
我这样做的原因:1. 我希望我的控制器尽可能薄 2. 我希望保留将我的应用程序层用于另一个基础架构的可能性
-
我已经在使用 MediatR 的管道了。我的问题是在 ASP.NET 控制器和 MediatR 管道上都这样做是否是“必要的”。在控制器上全部匿名是否被认为是一种不好的做法。
-
imo - 授权应该是控制器的关注点;但你想让控制器“瘦”——更重要的是在其他基础设施中重用 mediatr 处理程序,所以这完全是一个“取决于”的问题
标签: asp.net-web-api authorization mediatr