我有一个 CAS 服务器设置为身份验证类型的 ASP.NET MVC 站点。我还有一个单独的数据库,其中包含一个用户表和一个角色表(用户与一个或多个角色相关)。只有当用户名同时在用户表和 CAS 系统中时,用户才能登录系统。我有这个解决方案工作。
我的问题是我现在需要在 User.IsAuthenticated 上使用某种形式的触发器,这样我就可以跟踪当前用户(来自我的数据库),而我不可能尝试允许跟踪已注销的用户。我一直在想的是我需要将用户添加到 HttpContext 但如果 CAS 会话超时或用户注销,我不确定如何触发用户的清除。
我还希望有一些功能,例如 User.IsInRole(再次使用我的数据库,而不是 ASP.NET),但我不确定如何实现这一点。我想如果我可以成功地将用户添加到 HttpContext 中,那么 IsInRole 方法将只是一个 User.Roles.Contains(string role) 方法,但是如果我希望,例如,使用具有DataAnnotation [授权(角色=“ExampleRole”)]。
我查看了诸如如何为 ASP.NET MVC 2 创建自定义成员资格提供程序?但这对我不起作用(可能与我使用 CAS 身份验证有关?)
任何指导或背景阅读将不胜感激,因为我真的不确定我应该从哪里开始。我已经阅读了 GenericPrinciple、IPrinciple 和 IIdentity,但我正在努力了解如何将它们应用到我当前的项目中。