在数据库中验证使用许可配置的MVC应用程序



我目前正在尝试保护我们的应用程序,以便在许可证到期时无法使用。在我们的数据库中存储了一个注册键,我用它来确定许可证的有效性。

我最初的想法是在全局使用Session_Start。Asax文件以引用许可证详细信息,并在必要时发出重定向到"更新您的许可证页面"。在重定向之后,我在控制器操作中调用Session.Abandon(),以便对页面的任何进一步请求都将重复相同的过程。

这种方法的问题是,如果用户刷新页面,我似乎得到一个重定向循环发生。这让我认为Session_Start不是最好的主意,但我试图避免在BeginRequest或类似的地方放置代码。在更新许可证的有效尝试期间,绕过它也会很混乱。

我目前修改了在加载错误页面时进行AJAX调用以触发Session的想法。在服务器端放弃,但这仍然是错误的,如果有人意识到它是如何工作的,这是开放的滥用。

整个应用程序使用Windows身份验证进行保护,所以我没有选择在登录尝试期间评估许可,这将是我使用表单身份验证所做的。

有其他方法的建议吗?

因为这是一个MVC应用程序,所以你可以编写一个自定义属性,放在所有控制器继承的基控制器上。

 public class MyAuthorization : AuthorizeAttribute
 {
     //Call a stored proc or your database layer to check for the 
     //correct license validity
 }
 [MyAuthorization]
 public class BaseController : Controller 
 {
 }
 public class HomeController : BaseController
 {
 }

有了这个,每次控制器被击中,它将检查许可证密钥。

这就是我们处理授权超时的方式。我们检查我们的数据库,看看用户是否已经不活动了20分钟,如果是,就注销。

最新更新