成员资格:如何将userID设置为整数:S且未加密

时间:2010-03-02 12:40:46

标签: asp.net

CREATE TABLE [dbo].[aspnet_Membership](
 [ApplicationId] [uniqueidentifier] NOT NULL,
 [UserId] [uniqueidentifier] NOT NULL,

有没有简单的方法可以使用和整数值作为UserID(不是这个加密...)

我真的需要整数: - /

2 个答案:

答案 0 :(得分:4)

您可以轻松编写使用数据库的custom membership provider而不是默认的ASP.NET数据库。

这是Microsoft降低提供者模型的主要原因,他们提供了您需要实现的接口,然后其他工具(UI,访问控制等)都可以使用它。

可以在MSDN上找到示例实现:

  

How to: Sample Membership Provider Implementation

您会注意到ProviderUserKey上的MembershipUser是一个对象,而不是GUID,因此您可以使用Int,String或其它任何内容。

另一种选择是将此链接存储在用户配置文件中,然后从那里执行相关查找,但这不会那么干净。

编辑以回复评论

嗯,这取决于你真正想做的工作。如果您乐意在SQL数据库中复制ASP.NET成员资格存储过程,则可以创建一个类(如示例)继承自MembershipProvider的类,并仅提供{{1}的覆盖}方法创建基于整数的键,而不是基于GUID的键。

基本上,该示例向您展示了成员资格提供程序的完整实现 - 所有这些方法在MembershipProvider中的实现方式大致相同,方法和属性上的CreateUser关键字告诉框架“使用我的方法而不是基类方法请“。

答案 1 :(得分:0)

成员资格的GUID为UserId

MembershipUser myObject = Membership.GetUser();
string UserID = myObject.ProviderUserKey.ToString(); // it is the GUID as string

当然,您可以添加其他表UserId GUID,UserIdAsInteger并将其与成员资格1一对一地链接,但您需要一些额外的编码。