Update User Claim not Taking Effect. Why?

后端 未结 3 636
误落风尘
误落风尘 2020-12-08 15:29

I am using ASP.NET MVC 5.1 with Owin and Claims authentication.

After the user changes its email I need to update the users claims, so I tried in the controller:

3条回答
  •  离开以前
    2020-12-08 16:09

    SORRY, this is an ASP.NET CORE solution I also challenged the problem with claims, but the answer was easy to find.

    To refresh your cookie, you can rely on the RefreshSignInAsync() function of the SignInManager;

    private readonly UserManager _userManager;
        private readonly ApplicationDbContext _context;
        private readonly SignInManager _signInManager;
    
        public ApiClubController(UserManager userManager, SignInManager signInManager, ApplicationDbContext context)
        {
            _userManager = userManager;
            _context = context;
            _signInManager = signInManager;
        }
    

    Inside your function:

    //GET CURRENT USER
            var usr = await GetCurrentUserAsync();
            //OLD CLAIM
            var myClaims = await _userManager.GetClaimsAsync(usr);
            var oldClaim = myClaims.Where(o => o.Type.Equals("Club")).FirstOrDefault();
            if (oldClaim != null)
            {
                await _userManager.RemoveClaimAsync(usr, oldClaim);
            }
    
            //CREATE CLUB CLAIM
            var clubClaim = new Claim("Club", "" + id);
            await _userManager.AddClaimAsync(usr, clubClaim);
    
            //RESET USER COOKIE
            await _signInManager.RefreshSignInAsync(usr);
    
            //RETURN
            return Ok(company);;
    

    NOTE: I'm using an API here, because I'm mixing up a lot with angular. If you update your identity with your API, you need to refresh your page in order to view things based on your claim

提交回复
热议问题