在我使用Forms Authentication(通过SimpleMembership)的ASP.NET MVC应用程序中,如何删除用户/帐户?
WebSecurity类不公开DeleteUser.在云雀上,我试过:
WebSecurity.InitializeDatabaseConnection(
"MyDbConnection", "Users", "Id", "UserName", autoCreateTables: true);
new SimpleMembershipProvider().DeleteUser(userName, true);
Run Code Online (Sandbox Code Playgroud)
但是抱怨说我还没有初始化SimpleMembership提供商.无论如何,我非常感谢一些示例代码,它们展示了如何删除用户.谢谢!
短发
当我单击"删除"链接按钮时,它可以从我的"JobPost.mdf"中的"UserDetail"表中删除所有用户信息,它还删除相应的"aspnet_Users"和"aspnet_Membership",但"UserInRole"仍然包含那个UserName.即使我指定了代码:Membership.DeleteUser(UserName,true);
我认为true是bool deleteallrelated数据,但它并没有真正删除userInRole.因此,下次用户使用相同名称注册时,它会自动获得"admin"角色.
这个"deleteUser"页面我将它保存在受保护的"admin"文件夹中.
怎么解决?为什么Membership.DeleteUser(UserName,true)不会删除UserInRole?
protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
string UserName = e.CommandArgument.ToString();
Membership.DeleteUser(UserName, true);
JobPostDataContext db = new JobPostDataContext();
var query = from u in db.UserDetails
where u.UserName == UserName
select u;
foreach (var item in query)
{
db.UserDetails.DeleteOnSubmit(item);
}
db.SubmitChanges();
FormsAuthentication.SignOut();
}
}
Run Code Online (Sandbox Code Playgroud)
我在受保护的Admin文件夹中的web.config:
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<authorization>
<allow roles="Administrators" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)