我有一个ASP.NET服务器设置作为身份验证类型的ASP.NET MVC站点。我还有一个带有Users表和Roles表的独立数据库(用户与一个或多个角色相关)。如果用户名同时位于用户表和CAS系统中,用户只能登录系统。我有这个解决方案的工作。自定义用户和角色与ASP.NET MVC3
我的问题是我现在需要某种形式的User.IsAuthenticated触发的,所以我可以跟踪当前用户(从我的数据库),而不会是我试图让已注销用户的跟踪的可能性。我一直在想的是我需要添加用户到HttpContext,但我不知道如何触发清除用户,如果CAS会话超时或用户注销。
我也希望有一些功能,如User.IsInRole(再次使用我的数据库,而不是ASP.NET),但不知道如何去实现这个。我想如果我可以成功地将用户添加到HttpContext中,那么IsInRole方法将仅仅是一个User.Roles.Contains(字符串角色)方法,但是如果我希望使用该方法,例如,如何使用带有DataAnnotation [Authorize(role =“ExampleRole”)]]。
我看过这样的问题How do I create a custom membership provider for ASP.NET MVC 2?但这并不为我工作(可能使用CAS认证的我怎么办?)因为我真的不
任何指导或阅读的背景知识,将不胜感激确定我应该在哪里开始。我已经阅读了GenericPrinciple,原理和IIdentity,但我很努力地看到我可以如何将它们应用到我目前的项目中。
你看过[nerddinner](http://nerddinner.codeplex.com/)吗?他们实现CAS,并使用['FormsAuthenticationTicket'](http://msdn.microsoft.com/zh-cn/library/system.web.security.formsauthenticationticket.aspx)来存储标准成员资格提供者之外的详细信息。 – 2012-02-29 04:03:42
@Brad感谢您的链接,有趣的是,自从我上次看到它以来,nerddinner有多大变化。不幸的是,我真的无法找到帮助我的代码的方法,因为一开始我的认证代码是完全不同的(我使用Jasig-CAS不知道这是否有所作为),还有,从我可以告诉,FormsAuthenticationTicket存储的唯一数据是用户名和失效时间(由于Jasig-CAS服务器不受我控制,我无法提供失效时间,我不确定到期时间是什么,它可以也从其他网站更新),而我需要存储一个类 – Manatherin 2012-02-29 07:13:22