Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft标识-正在从角色中删除用户,但用户在注销之前仍具有访问权限_C#_Authentication_Authorization_Asp.net Identity_Usermanager - Fatal编程技术网

C# Microsoft标识-正在从角色中删除用户,但用户在注销之前仍具有访问权限

C# Microsoft标识-正在从角色中删除用户,但用户在注销之前仍具有访问权限,c#,authentication,authorization,asp.net-identity,usermanager,C#,Authentication,Authorization,Asp.net Identity,Usermanager,它的工作原理几乎和我想要的一样。但是,如果我删除了当前登录到我的应用程序的用户,那么他仍然能够“授权”我的所有WebApi调用,直到他注销为止。我做错了什么 编辑: 或者如何从代码中签出给定用户?两件事: 确保在更改用户/角色后,调用_context.SaveChanges() 要要求用户的活动会话重新验证,请使用ASP.NET中的SecurityStamp功能 如果您使用的是OAuth声明,这是如何使会话无效的一个很好的示例: 希望这有帮助 有两件事: 确保在更改用户/角色后,调用_co

它的工作原理几乎和我想要的一样。但是,如果我删除了当前登录到我的应用程序的用户,那么他仍然能够“授权”我的所有WebApi调用,直到他注销为止。我做错了什么

编辑:

或者如何从代码中签出给定用户?

两件事:

  • 确保在更改用户/角色后,调用_context.SaveChanges()
  • 要要求用户的活动会话重新验证,请使用ASP.NET中的SecurityStamp功能
如果您使用的是OAuth声明,这是如何使会话无效的一个很好的示例:

希望这有帮助

有两件事:

  • 确保在更改用户/角色后,调用_context.SaveChanges()
  • 要要求用户的活动会话重新验证,请使用ASP.NET中的SecurityStamp功能
如果您使用的是OAuth声明,这是如何使会话无效的一个很好的示例:


希望这有帮助

我只是不明白为什么没有其他使用“RemoveFromRole”的示例不解决这个问题。若你们从管理员的角色中删除某人,并且他的会话设置为持续一年,那个么他可能会破坏你们网站的一切。为什么没有“简单”的方法来做到这一点,我认为这是一件非常必要的事情?@SimonSondrupKristensen同意,对于角色/用户/组这样的个体实体来说,这可能/应该更容易。我想,既然有一种标准机制(SecurityStamp)可以克服这一问题,而且这更像是一个会话/身份验证缓存问题,更适合处理会话验证代码(SecurityStamp),它在优先级列表中的位置就很低。我只是不明白为什么没有其他使用“RemoveFromRole”的示例不要解决这个问题。若你们从管理员的角色中删除某人,并且他的会话设置为持续一年,那个么他可能会破坏你们网站的一切。为什么没有“简单”的方法来做到这一点,我认为这是一件非常必要的事情?@SimonSondrupKristensen同意,对于角色/用户/组这样的个体实体来说,这可能/应该更容易。我认为,由于有一种标准机制(SecurityStamp)可以克服这一问题,而且这更像是一个会话/身份验证缓存问题,更适合处理会话验证代码(SecurityStamp),所以它在优先级列表中处于较低的位置。
ApplicationDbContext _context = new ApplicationDbContext();
UserManager<ApplicationUser> _userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(_context));
userManager.RemoveFromRole("userId", "roleName");