首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除SimpleMembership用户?

如何删除SimpleMembership用户?
EN

Stack Overflow用户
提问于 2012-11-15 11:30:33
回答 5查看 13.3K关注 0票数 10

在我使用Forms身份验证(通过SimpleMembership)的ASP.NET MVC应用程序中,如何删除用户/帐户?

WebSecurity类不公开DeleteUser。开个玩笑,我试着:

代码语言:javascript
复制
WebSecurity.InitializeDatabaseConnection(
  "MyDbConnection", "Users", "Id", "UserName", autoCreateTables: true);

new SimpleMembershipProvider().DeleteUser(userName, true);

但这说明我还没有初始化SimpleMembership提供程序。在任何情况下,我都会非常感谢一些示例代码,这些代码展示了如何删除用户。谢谢!

鲍勃

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-11-15 11:37:27

如果你只做Membership.DeleteUser(username,true)会发生什么。在Membership上添加using指令时,您可能会得到一个小小的提示。如果配置正确,就不需要创建新的SimpleMembershipProvider实例。

如果像这样动态创建它,则需要在该对象上设置连接并以编程方式对其进行配置(它对上面创建的连接一无所知)。通常人们在web.config中这样做,但是如果您使用forms身份验证模板创建了应用程序,那么您应该自动处理它。

你的提供商可能有这个bug,这里讨论并解决了这个问题:Membership.DeleteUser is not deleting all related rows of the user

票数 7
EN

Stack Overflow用户

发布于 2013-02-27 21:41:15

PussInBoots是绝对正确的,尽管如果删除的用户被添加到任何角色中,它总是会抛出违反外键约束的情况。我确信这是由PussInBoots的"//TODO: Add delete logic here“注释推断出来的,但我通常会首先像这样清理角色成员关系:

代码语言:javascript
复制
[HttpPost]
public ActionResult Delete(string userName, FormCollection collection)
{
    try
    {
        // TODO: Add delete logic here
        if (Roles.GetRolesForUser(userName).Count() > 0)
        {
            Roles.RemoveUserFromRoles(userName, Roles.GetRolesForUser(userName));
        }
        ((SimpleMembershipProvider)Membership.Provider).DeleteAccount(userName); // deletes record from webpages_Membership table
        ((SimpleMembershipProvider)Membership.Provider).DeleteUser(userName, true); // deletes record from UserProfile table

        return RedirectToAction("Index");
    }
    catch
    {
        return View(userName);
    }
}
票数 39
EN

Stack Overflow用户

发布于 2012-11-25 01:58:14

你可能需要这样的东西:

代码语言:javascript
复制
    //
    // GET: /Members/Delete?userName=someuser

    public ActionResult Delete(string userName)
    {
        var user = context.UserProfiles.SingleOrDefault(u => u.UserName == userName);
        return View(user);
    }

    //
    // POST: /Members/Delete?userName=someuser

    [HttpPost]
    public ActionResult Delete(string userName, FormCollection collection)
    {
        try
        {
            // TODO: Add delete logic here
            ((SimpleMembershipProvider)Membership.Provider).DeleteAccount(userName); // deletes record from webpages_Membership table
            ((SimpleMembershipProvider)Membership.Provider).DeleteUser(userName, true); // deletes record from UserProfile table

            return RedirectToAction("Index");
        }
        catch
        {
            return View(userName);
        }
    }
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13391166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档