MVC + SOA 应用程序的哪一层应该包含权限执行?

Which layer of a MVC + SOA application should contain the permission enforcement?

我希望获得有关哪一层最适合在应用程序(视图、控制器、服务、模型)中执行权限的意见或最佳实践

例如,知道 MVC is/could 只是服务层的另一个消费者,这是否表明可能无法强制执行权限在控制器 and/or 视图级别?

就像任何事情一样,这取决于你,并且是有争议的,取决于意见。如果对你有用,就去做吧。

现在,在我看来,我喜欢把它放在控制器里。为什么?

  1. Microsoft 已经提供了执行此操作的工具。包括数据注释和 IPrincipal 东西。

  2. 控制器是您应用程序的入口。在入口处上锁是有道理的。

  3. 您的服务可以与您的应用程序用户分离,这意味着您可以在一个完全不同的应用程序中重新使用您的服务,该应用程序以不同方式处理权限。