我也发现,通常情况下,我不需要所有标准的MembershipProvider基地展示的功能。现在,我倾向于编写自己的轻量级方法来验证和授权用户。
我通常遵循这些作为一个粗略的指南:
- 设置身份验证模式,以形式在web.config中
- 自定义类来验证用户和检索角色相关联的用户ID
- 登录表单手动问题FormsAuthenticationCookie
- 配置子目录中的web.config元素禁止访问角色
以下是代码的例子,你可以用它来创建的FormsAuthenticationTicket自己,用自己的轻量级的方法来进行身份验证和授权的用户:
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
data.AccountId.ToString(),
DateTime.Now,
DateTime.Now.AddHours(24),
rememberMe,
data.ToString());
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
if (rememberMe)
cookie.Expires = DateTime.Now.AddDays(30);
HttpContext.Current.Response.Cookies.Add(cookie);
这只是一个粗略的想法,但请记住,这完全取决于你无论您是按原样使用MembershipProviders,您是否实施自己的,还是选择完全抛弃它们并构建自己的,只提供您需要的功能。我经常选择后者,只是因为很多我写的应用程序都是从原有系统升级已经具备会员数据库到位等
希望这有助于。
谢谢理查德,这几天我宁愿构建轻量级的实现,而不是架构提出外的开箱。 FormsAuthenticationTicket和简单之间有什么区别 FormsAuthentication.SetAuthCookie(account.Id.ToString(),true); 接近? – 2010-05-11 10:02:25
从功能上来说,两者几乎相当。然而,当你自己设置cookie时,你可以更好地控制数据进入它和一些附加属性。因此,如果您愿意,您还可以将cookie中的角色信息作为示例进行存储。 – Richard 2010-05-12 07:46:56