How to refresh claim of a different user than the one logged in during the current request?

喜欢而已 提交于 2019-12-01 21:47:42

问题


I use the following code to update the claims of a user in my web application. However, to update the claims/cookie of this user, I want to force him to login again. So essentially I want to expire his cookie after I update the claims. Any idea how to do this?

await _signInManager.RefreshSignInAsync(user); is the first thing I tried, but fails because I'm updating the claims of another user (the one that is currently logged in) :)

All other examples I found are more or less the same as RefreshSignInAsync and do not deal with the fact that I'm updating the claims of another user.

 public async Task<IActionResult> AddClaimPost(string id)
 {
     var user = _context.ApplicationUser
         .SingleOrDefault(m => m.Id == id);


     foreach(var item in Request.Form)
     {
         if (item.Key.Contains("Claim"))
         {
             if (item.Value.Contains("true"))
             {
                 if (!User.HasClaim(item.Key, item.Key))
                 {
                     var result = await _userManager.AddClaimAsync(user, new Claim(item.Key, item.Key));
                 }
             }
             else
             {
                 var result2 = await _userManager.RemoveClaimAsync(user, new Claim(item.Key, item.Key));
             }
         }
     }

     await _signInManager.RefreshSignInAsync(user);

     return RedirectToAction("Overview");
 }

回答1:


After searching a few days I discovered that what I want is not possible. You cannot force logging the user out without putting the cookie timespan to 0

options.Cookies.ApplicationCookie.ExpireTimeSpan = 0;

In this case it will check the cookie every time the user makes a request. With the following code you can than force the user to login again:

await _userManager.UpdateSecurityStampAsync(user);



来源:https://stackoverflow.com/questions/45347956/how-to-refresh-claim-of-a-different-user-than-the-one-logged-in-during-the-curre

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!