2016-08-27 19 views
0

私はAspNetUserを削除したいmvcアプリケーションを持っています。私はawait UserManager.DeleteAsync(user);を使用していますが、ユーザがログアウトしている間に動作するように見えますが、ログインしたhesが失敗した場合は失敗します。私はawait UserManager.RemoveFromRoleAsync(user.Id,"User");を使用して、ロールからユーザーを削除しましたが、ユーザーが再度ログインするまで[許可]属性に影響しないようです。現在ログインしているユーザーを完全に削除する方法はありますか?ログインユーザーへのアクセスを削除/無効にする

編集: は、いくつかの変更を行って、私の主な問題は依然として未解決であるが、今の削除が正常に通過し、まだ​​ただ、他のユーザーと同様に缶機能にログインしている間、ユーザーを削除しました。

簡単な方法ログインしたユーザーを削除したいので、リフレッシュしたり新しいページを開いたりすると、彼は彼がアクセスしてはいけないものを修正したりアクセスしたりする能力が失われます。

// GET: UserAcc/Delete/5 
[Authorize(Roles = "Admin")] 
public ActionResult Delete(int id) 
{ 
    return View(db.UserAccs.First(x => x.Id == id)); 
} 

// POST: UserAcc/Delete/5 
[HttpPost, ActionName("Delete")] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> Delete(int id, UserAcc userAccount) 
{ 
    try 
    { 
     var userAccLocal = db.UserAccs.First(x => x.Id == id); 
     var lessons = db.Lessons.Where(x => x.userAccLocal.Id); 
     foreach (var lesson in lessons){ db.Entry(lesson).State =EntityState.Deleted;} 
     var user = UserManager.FindById(userAccLocal.ApplicationUserId); 
     //TODO 
     db.Entry(userAccLocal).State = EntityState.Deleted; 
     db.SaveChanges(); 
     //IdentityResult roleResult = await UserManager.RemoveFromRoleAsync(user.Id,"User"); 
     IdentityResult DeleteResult = await UserManager.DeleteAsync(user); 

     return RedirectToAction("Index"); 
    } 
    catch (Exception e) 
    { 
     return RedirectToAction("Index"); 
    } 
} 
+0

ここにコードを投稿してください。 –

+0

削除しようとしたときにエラーが表示されます –

+0

変更を加えましたが、削除が正常に完了したようです。しかし、ログインしたユーザーは、他のページを開いたり、リフレッシュしても、まったく影響を受けません。私がこれを防ぐ方法はありますか? – FishFishFish

答えて

0

単にアカウントを削除する前に、すべてのセッションからにユーザをログアウト。

+0

私はメインの投稿にコメントする十分な評判がありません。 – LoganDark