0

使用 MembershipProvider 删除时存档 asp.net 用户是否有最佳实践?

基本上,我想要完成的是,当我使用 MembershipProvider.DeleteUser("someusername@some.com", true) 删除用户时,我希望能够存档其个人资料。

4

3 回答 3

0

由于(顾名思义)Membership 基于 Provider 模式,您可以轻松实现具有归档功能的 DeleteUser 方法。

对于 SqlMembershipProvider,您可以轻松添加已删除位列并自定义 aspnet_Users_DeleteUser 存储过程以不真正删除用户,而只需设置此位。然后还要修改其他 sprocs 以进行选择等,使其保持一致。检查http://msdn.microsoft.com/en-us/library/aa478949.aspx以了解概述。

于 2013-04-04T20:09:34.267 回答
0

由于您使用的是旧版会员服务提供商,因此这里有两种解决方案 -

简单的方法

将 aspnet_Membership表的IsApproved列标记为false 这样用户将无法登录。

如果你想这样做,你需要修改aspnet_Users_DeleteUser存储过程来更新IsApproved列而不是删除用户。

艰辛的道路

正如您所说,您不想将 IsDeleted 列添加到aspnet_Users表中,创建一个新表来跟踪已删除的用户。

在此处输入图像描述

在这里,您还需要修改aspnet_Users_DeleteUser存储过程以将UserId插入DeletedUsers表而不是删除用户。

此外,您需要修改aspnet_Membership_GetPasswordWithFormat存储过程以进行登录验证。

于 2013-04-04T21:07:41.593 回答
0

如果你只是这样做会发生什么Membership.DeleteUser(username,true).你可能会得到一点提示,要求在 Membership 上添加 using 指令。如果配置正确,则不需要创建新SimpleMembershipProvider实例。

如果您像这样动态创建它,则需要在该对象上设置连接并以编程方式对其进行配置(它不知道您在上面创建的连接)。通常人们在 web.config 中执行此操作,但如果您使用表单身份验证模板创建应用程序,那么您应该自动处理该问题。

于 2013-04-04T20:06:04.213 回答