我现在遇到了麻烦。
我通过 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存储过程,只是希望它会正常工作。 。
第二种方式对我来说更容易接受,但更正确,而不是硬编码......
所以我需要你的建议: - /
答案 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个字符和密码中的一个分隔符)遵守您当前的计划。也许这里没有提到不兼容,但那将是我的计划。