C# 当管理员更改asp.net权限时,如何终止登录用户的会话?
我正在从事一个有C# 当管理员更改asp.net权限时,如何终止登录用户的会话?,c#,asp.net,session,login,user-roles,C#,Asp.net,Session,Login,User Roles,我正在从事一个有3个角色的项目 管理员 超级用户 使用者 管理员能够控制每个用户。当我更改任何用户权限时,我希望查看用户是否已经登录,如果已经登录,则终止该用户会话并将其重定向到登录页面 但我不知道该怎么做。我想实现的是一种同步,只要管理员对用户进行任何更改,应用程序就会以这种方式工作 我已经实现了如下更改 var userForUpdation = (from o in entitiesForUpdation.Users
3个角色的项目
- 管理员
- 超级用户
- 使用者
var userForUpdation = (from o in entitiesForUpdation.Users
where o.UserID == user.UserID
select o).FirstOrDefault();
userForUpdation.User_Status = false;
entitiesForUpdation.SaveChanges();
如图所示,用户_状态被设置为false。现在,特定用户无法访问其帐户。但对我来说,这种情况正在发生,
登录的用户可以访问应用程序,直到他/她注销并再次登录。我想立即终止该特定用户的会话,这样他/她就不能再使用该应用程序了。我认为在将某个会话更改为管理员后,您无法远程终止该会话。我想到的一个解决方案是创建一个操作过滤器,检查每个请求是否用户角色、访问级别或状态已更改,如果更改为真,则终止会话。我认为您不能在更改管理员身份后远程终止会话。我想到的一个解决方案是创建一个操作过滤器,检查每个请求是否用户角色、访问级别或状态已更改,如果更改为真,则终止会话。我认为您不能在更改管理员身份后远程终止会话。我想到的一个解决方案是创建一个操作过滤器,检查每个请求是否用户角色、访问级别或状态已更改,如果更改为真,则终止会话。我认为您不能在更改管理员身份后远程终止会话。我想到的一个解决方案是创建一个操作过滤器,它检查每个请求是否用户角色、访问级别或状态已更改,如果更改为真,则终止会话。您不能立即从会话外部终止会话。但是,您可以在应用程序中设置一个标志,该标志将在每次请求时进行检查,如果设置,将放弃当前会话
要为用户设置标志,请执行以下操作:
if (Application["SessionAbandonFlags"] == null)
Application["SessionAbandonFlags"] = new List<string> ();
((List<string>) Application["SessionAbandonFlags"]).Add(currentUser);
这段代码当然可以改进。我只是想告诉你方向 您不能立即
从会话外部终止会话。但是,您可以在应用程序中设置一个标志,该标志将在每次请求时进行检查,如果设置,将放弃当前会话
要为用户设置标志,请执行以下操作:
if (Application["SessionAbandonFlags"] == null)
Application["SessionAbandonFlags"] = new List<string> ();
((List<string>) Application["SessionAbandonFlags"]).Add(currentUser);
这段代码当然可以改进。我只是想告诉你方向 您不能立即
从会话外部终止会话。但是,您可以在应用程序中设置一个标志,该标志将在每次请求时进行检查,如果设置,将放弃当前会话
要为用户设置标志,请执行以下操作:
if (Application["SessionAbandonFlags"] == null)
Application["SessionAbandonFlags"] = new List<string> ();
((List<string>) Application["SessionAbandonFlags"]).Add(currentUser);
这段代码当然可以改进。我只是想告诉你方向 您不能立即
从会话外部终止会话。但是,您可以在应用程序中设置一个标志,该标志将在每次请求时进行检查,如果设置,将放弃当前会话
要为用户设置标志,请执行以下操作:
if (Application["SessionAbandonFlags"] == null)
Application["SessionAbandonFlags"] = new List<string> ();
((List<string>) Application["SessionAbandonFlags"]).Add(currentUser);
这段代码当然可以改进。我只是想告诉你方向 您可以通过将JSON存储在UserData
属性中来实现
因此,如果您在数据库中的User
表中存储了一个字段,则每当用户角色发生更改时,就会有一个UpdatedTimeDate
字段,该字段将使用当前UTC时间进行更新。将此值存储在表单身份验证票证中
在事件期间,您可以检查此值是否与数据库中存储的值匹配,如果不匹配,则使登录会话过期。因此,对用户角色的任何更改都将导致用户注销
这样做的优点是将此信息存储在身份验证机制本身中,并且它也可以跨集群中的服务器工作,而在应用程序
对象中存储数据则不行。您可以通过在用户数据
属性中存储JSON来实现
因此,如果您在数据库中的User
表中存储了一个字段,则每当用户角色发生更改时,就会有一个UpdatedTimeDate
字段,该字段将使用当前UTC时间进行更新。将此值存储在表单身份验证票证中
在事件期间,您可以检查此值是否与数据库中存储的值匹配,如果不匹配,则使登录会话过期。因此,对用户角色的任何更改都将导致用户注销
这样做的优点是将此信息存储在身份验证机制本身中,并且它也可以跨集群中的服务器工作,而在应用程序
对象中存储数据则不行。您可以通过在用户数据
属性中存储JSON来实现
因此,如果您在数据库中的User
表中存储了一个字段,则每当用户角色发生更改时,就会有一个UpdatedTimeDate
字段,该字段将使用当前UTC时间进行更新。将此值存储在表单身份验证票证中
在事件期间,您可以检查此值是否与数据库中存储的值匹配,如果不匹配,则使登录会话过期。因此,对用户角色的任何更改都将导致用户注销
这样做的优点是将此信息存储在身份验证机制本身中,并且它也可以跨集群中的服务器工作,而在应用程序
对象中存储数据则不行。您可以通过在用户数据
属性中存储JSON来实现
因此,如果您在数据库中的User
表中存储了一个字段,那么您可能会有一个UpdatedTimeDate
字段,该字段在