Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net成员资格提供程序api。可用性。最佳做法_Asp.net_Membership Provider - Fatal编程技术网

asp.net成员资格提供程序api。可用性。最佳做法

asp.net成员资格提供程序api。可用性。最佳做法,asp.net,membership-provider,Asp.net,Membership Provider,成员资格/角色/配置文件提供程序API出现在asp.net的早期 几乎每次我都不能使用标准API&必须添加一些额外的功能(用于排序、检索e.t.c.)。我还必须经常使用不同的数据库结构(例如某些表的外键),或者考虑性能改进 这些考虑迫使我参与的团队构建自己的提供者,但我不能忍受实现提供者API(因为我们至少没有使用70%的标准功能)。此外,为特定项目构建的提供者很少被重用 我想知道是否有人发现早期的API提供程序实现在没有重构的情况下对任何类型的项目都有用。。。 或者您是否使用自己早期API的实

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

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

这些考虑迫使我参与的团队构建自己的提供者,但我不能忍受实现提供者API(因为我们至少没有使用70%的标准功能)。此外,为特定项目构建的提供者很少被重用

我想知道是否有人发现早期的API提供程序实现在没有重构的情况下对任何类型的项目都有用。。。 或者您是否使用自己早期API的实现 或者您可能会放弃标准体系结构而使用轻量级实现


提前感谢您

我也发现,通常我并不需要标准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);
这只是一个粗略的想法,但请记住,是否按原样使用成员资格提供程序、是否实现自己的成员资格提供程序,或者是否选择完全抛弃它们并构建自己的成员资格提供程序,以提供所需的功能,完全取决于您。我经常选择后者,因为我编写的许多应用程序都是从已有成员数据库的遗留系统升级而来的


希望这能有所帮助。

谢谢Richard,现在我更喜欢构建轻量级实现,而不是现成的架构。FormsAuthenticationTicket和简单的FormsAuthentication.SetAuthCookie(account.Id.ToString(),true)之间有什么区别;方法?在功能上,这两种方法几乎是等价的。但是,当您自己设置cookie时,您可以更好地控制进入cookie的数据和一些附加属性。例如,如果愿意,您还可以在该cookie中存储角色信息。