我有一个多宿主的系统,也就是说,我们的客户共享一个数据库。使用MVC路由,我可以将客户名称作为域的第一部分({customer}.server.tld
)传递,并将其转换为控制器操作的参数。
问题包括:
授权:如何透明地执行此操作,以便开发人员进行控制器操作时不必记住执行此操作,未经授权的人员如果无权查看特定客户,将自动收到403?
参数传递:我不希望每个控制器操作都有一个名为“customerId”的参数。数据具有GUID主键,因此在数据访问级别不需要customerId。
我该怎么办?我不希望用户更改URL并访问我们所有客户的数据!
答案 0 :(得分:0)
您是否考虑过使用 Windows Identity Foundation(WIF)? 可能听起来有点矫枉过正,但它不仅可以让您将AuthN与AuthZ分开,还可以使用代码逻辑(在一个地方!),您可以检查每个客户的声明(可能基于路线数据)并采取相应的行动......看看其中的一些链接: