2010-05-10 65 views
1

会员/角色/配置文件提供API出现在asp.netasp.net会员提供api。可用性。最佳实践

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

这些因素迫使球队,我参加了建立自己的供应商,但我不能忍受实现供应商API(因为我们不至少使用的标准功能,70%)。此外,为精确项目建造的提供商很少被重复使用。

我不知道是否有人发现瑞士小刀早天API提供商实现,是有用的任何类型的项目,而不重构...... 或者你使用自己的早期天API的 或者可能实现你放弃标准架构并使用轻量级实现?

预先感谢您

回答

2

我也发现,通常情况下,我不需要所有标准的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,您是否实施自己的,还是选择完全抛弃它们并构建自己的,只提供您需要的功能。我经常选择后者,只是因为很多我写的应用程序都是从原有系统升级已经具备会员数据库到位等

希望这有助于。

+0

谢谢理查德,这几天我宁愿构建轻量级的实现,而不是架构提出外的开箱。 FormsAuthenticationTicket和简单之间有什么区别 FormsAuthentication.SetAuthCookie(account.Id.ToString(),true); 接近? – 2010-05-11 10:02:25

+0

从功能上来说,两者几乎相当。然而,当你自己设置cookie时,你可以更好地控制数据进入它和一些附加属性。因此,如果您愿意,您还可以将cookie中的角色信息作为示例进行存储。 – Richard 2010-05-12 07:46:56