CREATE TABLE [dbo].[aspnet_Membership](
[ApplicationId] [uniqueidentifier] NOT NULL,
[UserId] [uniqueidentifier] NOT NULL,
有没有简单的方法可以使用和整数值作为UserID(不是这个加密...)
我真的需要整数: - /
答案 0 :(得分:4)
您可以轻松编写使用数据库的custom membership provider而不是默认的ASP.NET数据库。
这是Microsoft降低提供者模型的主要原因,他们提供了您需要实现的接口,然后其他工具(UI,访问控制等)都可以使用它。
可以在MSDN上找到示例实现:
您会注意到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一对一地链接,但您需要一些额外的编码。