我目前有一个 Web 应用程序,它使用它自己的“权限”表,其中包含以下列:
- 用户名 - Windows 用户名 (Context.User.Identity.Name)
- DivisionID - 到分区表的链接
- RoleID - 来自自定义角色表
- RegionID - 最近添加的字段将我的应用程序划分为国家(加拿大、美国、国际)
当用户登录站点时,他们选择他们想要进入的区域,我需要根据他们是否为该特定 RegionID 设置任何权限来授予他们访问这些区域的权限。选择区域后,RegionID 将存储在 Session 中,并将用于此权限检查并定义如何在页面上填充数据(我还没有在所有页面中实现 Session 变量,以便可以更改如果需要)
我最初的想法是在将它们发送到三个目的地之一的每个页面上运行我的权限检查:
- 无效的权限页面 (false)
- 区域选择页面 - 会话中未选择区域 (RegionID = 0)
- 他们请求的页面 - 如果为该区域设置了权限
我还研究过在 Global.asax 中使用 Application_AuthenticateRequest 方法,但我不能在该区域内使用 Session 并且它似乎比应有的更多地击中 Application_AuthenticateRequest。
使用我当前的应用程序,根据他们的权限,使用相应区域对每个用户进行身份验证的最佳方法是什么?