Asp.net core Asp.net MVC核心可防止对某些页面进行多设备访问
我的整个系统允许一个用户同时从多个设备访问。但是,某些页面不允许这样做。当用户从设备1访问页面时,随后他从设备2访问页面,第二个设备需要正常访问。但是,应将第一个设备重定向到另一个页面(用户仍在两个设备上登录) 我正在使用ASP.net核心标识管理标识 读完后,我想我可以在这种情况下使用信号器。每当用户从设备2访问时,他都会向服务器发送消息。服务器将向设备1推送消息,设备1将重定向。但是,它看起来不太好,因为重定向是从客户端(设备1)进行的。这意味着设备1可以很容易地通过篡改客户端代码来拒绝重定向 解决我的问题的正确方法是什么 当用户从设备1访问页面时,随后他从设备2访问页面,第二个设备需要正常访问。但是,应将第一个设备重定向到另一个页面(用户仍在两个设备上登录) 如您所述,为了实现上述要求,将信号器功能集成到web应用程序中是一个可能的解决方案 您可以保留有关Asp.net core Asp.net MVC核心可防止对某些页面进行多设备访问,asp.net-core,asp.net-identity,signalr.client,asp.net-core-signalr,Asp.net Core,Asp.net Identity,Signalr.client,Asp.net Core Signalr,我的整个系统允许一个用户同时从多个设备访问。但是,某些页面不允许这样做。当用户从设备1访问页面时,随后他从设备2访问页面,第二个设备需要正常访问。但是,应将第一个设备重定向到另一个页面(用户仍在两个设备上登录) 我正在使用ASP.net核心标识管理标识 读完后,我想我可以在这种情况下使用信号器。每当用户从设备2访问时,他都会向服务器发送消息。服务器将向设备1推送消息,设备1将重定向。但是,它看起来不太好,因为重定向是从客户端(设备1)进行的。这意味着设备1可以很容易地通过篡改客户端代码来拒绝重定
用户名-UserConnectionId(s)-PageName
的信息,然后可以调用hub方法来检查连接Id(和当前页面名称)是否与现有的connectionId(和页面名称)不同在保留的映射数据中,根据连接Id将消息推送到特定的客户端,以触发客户端重定向
它看起来不太好,因为重定向是从客户端(设备1)进行的
是的,客户端用户可以禁用signalR javascript客户端功能以防止重定向。作为一种解决方法,可以在服务器端进行双重检查
例如,您可以将上述映射数据UserName-UserConnectionId(s)-PageName
存储在某个永久存储器中,然后您可以在控制器操作(或处理程序方法)代码逻辑中检查它,如果当前用户手动禁用javascript客户端功能,并且该存储器中未添加当前用户的映射数据,您可以将用户重定向到一个特定页面,该页面显示诸如“此应用程序需要signalR javascript客户端功能,请不要禁用它”之类的内容,而不是显示用户期望的页面
当用户从设备1访问页面时,随后他从设备2访问页面,第二个设备需要正常访问。但是,应将第一个设备重定向到另一个页面(用户仍在两个设备上登录)
如您所述,为了实现上述要求,将信号器功能集成到web应用程序中是一个可能的解决方案
您可以保留有关用户名-UserConnectionId(s)-PageName
的信息,然后可以调用hub方法来检查连接Id(和当前页面名称)是否与现有的connectionId(和页面名称)不同在保留的映射数据中,根据连接Id将消息推送到特定的客户端,以触发客户端重定向
它看起来不太好,因为重定向是从客户端(设备1)进行的
是的,客户端用户可以禁用signalR javascript客户端功能以防止重定向。作为一种解决方法,可以在服务器端进行双重检查
例如,您可以将上述映射数据
UserName-UserConnectionId(s)-PageName
存储在某个永久存储器中,然后您可以在控制器操作(或处理程序方法)代码逻辑中检查它,如果当前用户手动禁用javascript客户端功能,并且该存储器中未添加当前用户的映射数据,您可以将用户重定向到一个特定页面,该页面显示“此应用程序需要signalR javascript客户端功能,请不要禁用它”等内容,而不是显示用户期望的页面。关于服务器端的双重检查,我想我这里没有处理程序方法。在设备2访问时,设备1不执行任何调用服务器的操作。即使在设备2连接之前,也应调用设备1的控制器操作,并且该操作在该时间有效。设备1上的客户端可以先加载页面,然后禁用signarjavascript。在设备2访问时,设备1不执行任何调用服务器的操作。即使在设备2连接之前,也应调用设备1的控制器操作,并且该操作在该时间有效。设备1上的客户端可以先加载页面,然后禁用signalR javascript。