2012-05-13 135 views
0

我使用.NET成员资格,但我工作的一切我想要自定义。自定义.NET成员资格

我想要做的是:

  1. 自定义字段创建自定义数据表[用户]
  2. 导入当前的数据插入到新表
  3. 创建自定义类和功能有关的一切我需要的[网友]

我真的不知道怎么籍工作.NET,但也许它发送加密的Cookie,然后当我使用

var user = Membership.GetUser(); 

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

这里是.NET如何创建用户AUTH的cookie http://prntscr.com/97043

但每次用户注销登录截图,这个值是不同的。

所以我想知道的是:

  1. 可以说我要打100%定制的网站,我怎么可以自定义登录?
  2. 你能告诉我关于去定制会员的所有安全问题吗?
+0

你有没有看到我的回答对同一问题? http://stackoverflow.com/questions/5701673/custom-membershipprovider-in-net-4-0/5702000#5702000 – balexandre

回答

0

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

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

  • 不要存放在任何地方明文密码;哈希他们。
  • Salt your passwords
  • 登录&监控密码重置

而且,你不必完全重写SqlMembershipProvider,你也可以继承它,并添加你要找的功能,大多数的问题你可能遇到的情况将由默认实现覆盖。您可能只需略微修改数据访问调用或存储过程以映射到表结构。您还可以继承SqlRoleProvider的子类,为您的站点提供基于角色的授权,只需少量额外的工作。

至于前端组件,MSDN也描述了how forms authentication works,但个人而言,我不会搞砸你自己的cookie方案。即使像asp.net的Oauth这样的大型自定义实现仍然使用表单。退房http://msdn.microsoft.com/en-us/library/system.web.security.sqlroleprovider.aspx

1

这是没有必要的。您可以创建自己的用户表,而无需更改与成员资格或身份验证相关的任何内容。你只要确保你的用户表有一个名为AspNetUserID的列或类似uniqueidentifier(一个GUID)的列。您可以将MembershipUser中的ProviderUserKey放入此表中,只需从Membership中获取ProviderUserKey即可查找Users表中的任何用户。

因此,举例来说,你可以这样做:

var userid = Membership.GetUser().ProviderUserKey; 

// lookup your record in users based on userid above 
相关问题