在我使用Forms身份验证(通过SimpleMembership)的ASP.NET MVC应用程序中,如何删除用户/帐户?
WebSecurity类不公开DeleteUser。开个玩笑,我试着:
WebSecurity.InitializeDatabaseConnection(
"MyDbConnection", "Users", "Id", "UserName", autoCreateTables: true);
new SimpleMembershipProvider().DeleteUser(userName, true);但这说明我还没有初始化SimpleMembership提供程序。在任何情况下,我都会非常感谢一些示例代码,这些代码展示了如何删除用户。谢谢!
鲍勃
发布于 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
发布于 2013-02-27 21:41:15
PussInBoots是绝对正确的,尽管如果删除的用户被添加到任何角色中,它总是会抛出违反外键约束的情况。我确信这是由PussInBoots的"//TODO: Add delete logic here“注释推断出来的,但我通常会首先像这样清理角色成员关系:
[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);
}
}发布于 2012-11-25 01:58:14
你可能需要这样的东西:
//
// 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);
}
}https://stackoverflow.com/questions/13391166
复制相似问题