2017-07-27 53 views
0

我使用以下代碼更新我的Web應用程序中用戶的聲明。但是,要更新此用戶的聲明/ Cookie,我想強制他再次登錄。所以基本上我想在更新索賠後過期他的cookie。任何想法如何做到這一點?更新遠程用戶聲明

await _signInManager.RefreshSignInAsync(user);是我嘗試的第一件事,但因爲我正在更新另一個用戶的聲明而失敗:)

我發現的所有其他示例都與RefreshSignInAsync差不多,並且不處理我正在更新的事實另一個用戶的聲明。

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"); 
     } 

回答

0

搜索了幾天後,我發現我想要的是不可能的。你不能逼出來註銷用戶,而無需把餅乾時間跨度爲0

options.Cookies.ApplicationCookie.ExpireTimeSpan = 0;

在這種情況下,它會在每次用戶發出請求時檢查Cookie。用以下代碼可以強制用戶再次登錄:

await _userManager.UpdateSecurityStampAsync(user);