0

我使用 .net 会员资格,但我工作的一切我都想定制。

我想做的是:

  1. 使用自定义字段创建自定义数据表 [用户]
  2. 将当前数据导入新表
  3. 创建关于我需要的一切的自定义类和函数 [用户]

我不确定 .net 会员是如何工作的,但是当我使用它时,它可能会发送加密的 cookie

var user = Membership.GetUser();

.Net 解密用户 cookie 并知道哪个用户是。

这是 .net 如何创建用户 AUTH cookie http://prntscr.com/97043的屏幕截图

但是每次用户logout-login,这个值都不一样。

所以我想知道的是:

  1. 假设我想制作 100% 自定义网站,我如何制作自定义登录?
  2. 你能告诉我关于申请自定义会员的所有安全问题吗?
4

2 回答 2

1

这些都不是必需的。您可以创建自己的用户表,而无需更改与成员资格或身份验证相关的任何内容。您只需确保您的 users 表有一个名为 AspNetUserID 或类似 uniqueidentifier (a guid) 类型的列。您将 MembershipUser 中的 ProviderUserKey 放入此表中,并通过从 Membership 中获取 ProviderUserKey 来查找用户表中的任何用户。

因此,例如,您可以这样做:

var userid = Membership.GetUser().ProviderUserKey;

// lookup your record in users based on userid above
于 2012-05-13T16:25:36.793 回答
0

实现自定义后端并不困难。您只需实现一个自定义MembershipProvider,在您认为合适的时候从您的用户表中存储和检索数据。见MSDN。此外,您不必完全重写SqlMembershipProvider,您可以对其进行子类化并添加您正在寻找的功能。

如果你真的想在后端从头开始,这里有一些问题需要注意:

  • 不要在任何地方以明文形式存储密码;散列它们。
  • 给你的密码加盐
  • 记录和监控密码重置

此外,您不必完全重写SqlMembershipProvider,您可以对其进行子类化并添加您正在寻找的功能,并且您可能遇到的大多数问题都将在默认实现中涵盖。您可能只需稍微修改数据访问调用或存储过程以映射到您的表结构。您还可以将SqlRoleProvider子类化,以便为您的站点提供基于角色的授权,而无需付出额外的努力。

至于前端组件,MSDN 也描述了表单身份验证的工作原理,但就我个人而言,我不会弄乱您自己的 cookie 方案。甚至像 Oauth for asp.net 这样的大型自定义实现仍然使用表单。查看http://msdn.microsoft.com/en-us/library/system.web.security.sqlroleprovider.aspx

于 2012-05-13T15:40:31.913 回答