asp.net会员提供者api。可用性。最佳实践

时间:2010-05-10 20:11:38

标签: asp.net membership-provider

成员资格/角色/资料提供程序API出现在asp.net的早期

几乎每次我都无法使用标准API&必须添加一些额外的功能(用于排序,检索e.t.c.)。我还经常使用不同的数据库结构(例如,使用某些表的外键)或考虑性能改进。

这些考虑因素迫使我参与的团队建立自己的提供商,但我无法实施提供商API(因为我们至少不使用70%的标准功能)。此外,为精确项目而构建的提供程序很少被重用。

我想知道是否有人发现了swiss-knife早期的API提供程序实现,这对任何类型的项目都没有重构... 或者您使用自己的早期API实现 或者您可能放弃标准架构并使用轻量级实现?

提前谢谢

1 个答案:

答案 0 :(得分:2)

我也发现通常我不需要所有标准MembershipProvider基础中公开的功能。这些天,我倾向于编写自己的轻量级方法来验证和授权用户。

我通常会将这些视为粗略指南:

  • 将身份验证模式设置为web.config
  • 中的表单
  • 自定义类,用于对用户进行身份验证并检索关联UserId的角色
  • 登录表单以手动发出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,是否实施自己的,还是选择完全抛弃它们并构建自己的,只提供您需要的功能。我经常选择后者,因为我编写的很多应用程序都是从已有会员数据库的遗留系统升级等。

希望这有帮助。