【发布时间】:2014-05-08 05:41:27
【问题描述】:
我目前正在尝试保护我们的应用程序,使其在许可证过期时无法使用。我们的数据库中存储了一个注册密钥,我用它来确定许可证的有效性。
我最初的想法是在 global.asax 文件中使用 Session_Start 来参考许可证详细信息,并在必要时发出重定向到“更新您的许可证页面”。在重定向之后,我在控制器操作中调用了 Session.Abandon(),以便对页面的任何进一步请求都将重复相同的过程。
这种方法的问题是,如果用户刷新页面,我似乎会出现重定向循环。这让我认为 Session_Start 不是最好的主意,但我试图避免将代码放在 BeginRequest 或类似中。在有效尝试更新许可证期间绕过也会很麻烦。
我目前修改了在加载错误页面时进行 AJAX 调用以在服务器端触发 Session.Abandon 的想法,但这仍然感觉不对,并且如果有人意识到它是如何工作的,就会被滥用。
整个应用程序使用 Windows 身份验证进行保护,因此我无法在登录尝试期间评估许可,而这正是我使用表单身份验证所做的。
对替代方法有什么建议吗?
【问题讨论】:
-
为什么不用
Application_Start()而不是Session_Start()?检查每个请求的许可证是没有意义的(除非许可证间隔 5 分钟) - 每天一次左右应该没问题。此外,如果有人想绕过许可证检查,AJAX 调用将很容易被禁用。 -
@Tommy 感谢您的回复。不幸的是,他们在同一个应用程序中更新了注册密钥。
标签: asp.net asp.net-mvc application-lifecycle