Asp.net mvc 使用用户的IP地址对其进行身份验证

Asp.net mvc 使用用户的IP地址对其进行身份验证,asp.net-mvc,asp.net-mvc-5,asp.net-identity,Asp.net Mvc,Asp.net Mvc 5,Asp.net Identity,对于我正在进行的项目,我需要能够在某些条件下根据访问者的IP地址对其进行身份验证 我一直在做的就是将访问者的IP地址与数据库中的表进行比较。如果IP签出,我将从DB获取相关用户,并以有限的访问权限登录 不过,我一直在使用global.asax中的Session_start()方法执行此操作,并创建一个Session变量,指定用户是否通过IP登录。然后,如果用户通过IP登录,我会限制某些功能 然而,这还不够好,主要是因为当用户第一次访问站点时,我想让他知道他已经通过IP地址登录,但会话启动似乎是在

对于我正在进行的项目,我需要能够在某些条件下根据访问者的IP地址对其进行身份验证

我一直在做的就是将访问者的IP地址与数据库中的表进行比较。如果IP签出,我将从DB获取相关用户,并以有限的访问权限登录

不过,我一直在使用global.asax中的Session_start()方法执行此操作,并创建一个Session变量,指定用户是否通过IP登录。然后,如果用户通过IP登录,我会限制某些功能

然而,这还不够好,主要是因为当用户第一次访问站点时,我想让他知道他已经通过IP地址登录,但会话启动似乎是在视图呈现后启动的,因此在访问者刷新页面或访问子页面之前,消息不会显示。仅仅拥有一个会话变量似乎还不够安全(尽管我承认我没有对此进行适当的研究)

我尝试在应用程序_BeginRequest()方法中执行检查和自动登录,但身份验证管理器在请求的早期还没有初始化,因此我无法让用户登录


有人能给我指出正确的方向吗?实现这一点的最佳方法是什么?

您可以使用和扩展authorized属性并覆盖授权,以便将检查放在那里。

通过IP地址进行身份验证是一种非常糟糕的方法。IP地址可能被共享或更改,很少反映使用它的机器的身份,更不用说用户了。我知道IP身份验证的问题。然而,由于项目性质的限制,它是可以接受的。这也将限于某些用户。如果这样做,我不需要在每个控制器上都添加Authorize属性吗?您可以将其作为GlobalFilters.Filters.add(new MyAuthorizeAttribute())添加到您的GlobalFilters中,或者创建一个基本控制器。