我正在尝试建立使用 .net mvc 记录对控制器/操作的未授权访问尝试的最佳方法,基本上要求是:
- 如果他们没有登录,那么我们想将他们重定向到登录页面
- 如果他们已登录但没有页面的正确凭据,那么我们想要记录有关请求的信息、他们是谁、一些 HttpRequest 内容等,然后将它们重定向到特定的未经授权的访问页面。
1 显然是默认使用 .net mvc [Authorize] 属性过滤器处理的。2 我已经部分实现,我创建了一个特定的 Authorization 属性,它扩展了 Authorize 操作过滤器,该过滤器覆盖了默认的 HandleUnauthorizedRequest 方法来检查一些额外的东西并返回一个带有响应代码 403 的 HttpResult。
我无法实现另一部分,将信息记录到数据库中。当然有从自定义属性本身记录它的简单解决方案,但这感觉不对,感觉就像我正在让属性本身变得更聪明,然后它应该是,在一天结束时它应该知道关于限制访问,而不是关于将信息记录到数据库。
当它到达未经授权的页面本身时,还有另一种记录它的解决方案,它感觉不那么糟糕,但仍然感觉不太正确。
就我个人而言,我希望能够在请求链中的某个地方处理它,但据我所知,没有地方可以访问所有正确的信息。我试过在这里四处寻找,但没有找到任何非常适合我们想要的解决方案的东西。
有没有人实现了与我们的目标类似的东西,或者对应该在哪里实现它有任何想法。
谢谢,医学博士