2014-02-21 56 views
0

对于我正在开发的项目,我需要能够在特定条件下基于IP地址对访问者进行身份验证。使用IP地址对用户进行身份验证

我一直在做的方式是通过比较访问者的IP地址和我的数据库中的表。如果IP检出,我从数据库中获取相关用户并以有限的访问权限登录。

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

然而,这并没有得到足够好的工作,主要是因为当用户第一次访问该网站时,我想让他知道他已经通过他的IP地址登录,但会话开始似乎在视图后被解雇已被渲染,因此直到访问者刷新页面或访问子页面时才显示该消息。只是有一个会话变量也似乎不够安全(尽管我承认我没有正确研究过)。

从来就试着做了检查,并自动登录中的Application_BeginRequest()方法,但认证管理器未初始化,在早期的要求,所以我不能登录的用户。

任何人那可以指向我正确的方向?完成这个最好的方法是什么?

+1

通过IP地址进行身份验证是一种严重不良的做事方​​式。 IP地址可能被共享或更改,很少反映使用它的机器的身份,更不用说用户。 – 2014-02-21 02:16:17

+0

我知道IP认证的问题。但由于项目的性质,限制条件是可以接受的。这也将限于某​​些用户。 – grimurd

回答

1

您可以使用和扩展AuthorizeAttribute并覆盖OnAuthorization,以便您可以将检查放在那里。

+0

如果这样做,我不需要将授权属性放在每个控制器上? – grimurd

+0

您可以将它作为GlobalFilters.Filters.Add(新的MyAuthorizeAttribute())添加到GlobalFilters中,或者拥有一个基础控制器。 – drunkcoder

+0

这个建议像魅力一样工作,谢谢。 – grimurd

相关问题