在SQL上合并来自DataBase Win Application的ASP成员用户和tbUsers

时间:2010-03-02 09:32:18

标签: .net asp.net sql

我现在遇到了麻烦。

我通过 TbUser 表获得了win应用程序和许多功能。 这是一个简单的表,包含ID,用户名和密码,以及一些可以为空的字段

现在我需要将它与我的 ASP.NET 成员资格表合并:S

__ 最后我需要在WinApplication中注册用户!

登录ASP.NET Web应用程序> _<

    TABLE [dbo].[aspnet_Membership](
    [ApplicationId] [uniqueidentifier] NOT NULL,
    [UserId] [uniqueidentifier] NOT NULL,
    [Password] [nvarchar](128) COLLATE Cyrillic_General_CI_AI_KS_WS NOT NULL,
    [PasswordFormat] [int] NOT NULL DEFAULT ((0)),
    [PasswordSalt] [nvarchar](128) COLLATE Cyrillic_General_CI_AI_KS_WS NOT NULL,
    [MobilePIN] [nvarchar](16) COLLATE Cyrillic_General_CI_AI_KS_WS NULL,
    [Email] [nvarchar](256) COLLATE Cyrillic_General_CI_AI_KS_WS NULL,
    [LoweredEmail] [nvarchar](256) COLLATE Cyrillic_General_CI_AI_KS_WS NULL,
    [PasswordQuestion] [nvarchar](256) COLLATE Cyrillic_General_CI_AI_KS_WS NULL,
    [PasswordAnswer] [nvarchar](128) COLLATE Cyrillic_General_CI_AI_KS_WS NULL,
    [IsApproved] [bit] NOT NULL,
    [IsLockedOut] [bit] NOT NULL,
    [CreateDate] [datetime] NOT NULL,
    [LastLoginDate] [datetime] NOT NULL,
    [LastPasswordChangedDate] [datetime] NOT NULL,
    [LastLockoutDate] [datetime] NOT NULL,
    [FailedPasswordAttemptCount] [int] NOT NULL,
    [FailedPasswordAttemptWindowStart] [datetime] NOT NULL,
    [FailedPasswordAnswerAttemptCount] [int] NOT NULL,
    [FailedPasswordAnswerAttemptWindowStart] [datetime] NOT NULL,
    [Comment] [ntext] COLLATE Cyrillic_General_CI_AI_KS_WS NULL,
PRIMARY KEY NONCLUSTERED 
(
    [UserId] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO
ALTER TABLE [dbo].[aspnet_Membership]  WITH CHECK ADD FOREIGN KEY([ApplicationId])
REFERENCES [dbo].[aspnet_Applications] ([ApplicationId])
GO
ALTER TABLE [dbo].[aspnet_Membership]  WITH CHECK ADD FOREIGN KEY([UserId])
REFERENCES [dbo].[aspnet_Users] ([UserId])

表有不同的名称和不同的内容,我也想知道位于不同表中的ASP.NET密码和用户名:S

我想我需要调用一些SQL convertation程序的的OnClose 我里面ASP网站winApplication或地方。这样,我会TbUsers转换为AspMembership只允许多重登入到该网站,并留在用我的TbUsers表。

但那将是非常难的SQL程序:(

使用用户名的asp表:

    TABLE [dbo].[aspnet_Users](
    [ApplicationId] [uniqueidentifier] NOT NULL,
    [UserId] [uniqueidentifier] NOT NULL DEFAULT (newid()),
    [UserName] [nvarchar](256) COLLATE Cyrillic_General_CI_AI_KS_WS NOT NULL,
    [LoweredUserName] [nvarchar](256) COLLATE Cyrillic_General_CI_AI_KS_WS NOT NULL,
    [MobileAlias] [nvarchar](16) COLLATE Cyrillic_General_CI_AI_KS_WS NULL DEFAULT (NULL),
    [IsAnonymous] [bit] NOT NULL DEFAULT ((0)),
    [LastActivityDate] [datetime] NOT NULL,
PRIMARY KEY NONCLUSTERED 
(
    [UserId] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
ALTER TABLE [dbo].[aspnet_Users]  WITH CHECK ADD FOREIGN KEY([ApplicationId])
REFERENCES [dbo].[aspnet_Applications] ([ApplicationId])

和一个更硬的方式 - 是重写所有程序ASP.Membership databace,但后来我需要使用SQL ASP存储过程,只是希望它会正常工作。 。

第二种方式对我来说更容易接受,但更正确,而不是硬编码......

所以我需要你的建议: - /

2 个答案:

答案 0 :(得分:1)

好的,我建议您不要尝试使用SQL将两个身份验证系统合并在一起。你在问自己已经遇到的问题和头痛。

相反,请查看创建自己的membership provider。成员资格提供程序(以及其他内容)是允许asp.net对您的用户进行身份验证的代码。

编写自己的提供程序将允许您根据表tbUsers而不是aspnet_Users对用户进行身份验证

看一下这个视频(不是自己看,但应该让你开始)。

Create custom membership provider video how-to

希望这有帮助。

答案 1 :(得分:1)

您也可以将Forms Authentication与非ASP.NET应用程序一起使用,例如Windows Forms应用程序。此外,表单身份验证是一个经过充分测试和广泛使用的功能。

所以,如果我在你的位置,我会将自定义表中的所有用户数据传输到ASP.NET成员资格中的相应数据,然后我就不再使用这些表了。

请不要忘记调整相应的参数,例如,在app.config中,控制密码中允许的字符数(默认情况下,表单身份验证需要至少7个字符和密码中的一个分隔符)遵守您当前的计划。也许这里没有提到不兼容,但那将是我的计划。