2012-05-14 76 views
2

所以我有这个理论上可能有一天会成为付费应用程序的Web应用程序 - 如果有人真的觉得它有用并且值得。何时检查是否应该允许帐户使用Web应用程序?

我有处理付款的所有逻辑,检查帐户是否过期等。它全部存储在RavenDB(实际上是RavenHQ)中 - 并不是说​​这对于手头的问题应该很重要。

现在,我正在尝试遵循最佳实践,并且我希望我的应用程序具有高性能,即不是微型优化,但我希望以一种可以相对较好地加载的方式来执行操作(如果它启动它将被托管 - 我想不必支付更多的服务器而不是绝对必要的)。

我的应用使用的东西接近默认的登录/帐户模型。用户通过https使用表单身份验证安全地登录。

在什么时候应该检查用户是否真的被允许(关于付款状态等问题 - 一个真正的领域模型问题)使用Web应用程序?考虑到这将意味着从RavenDB后端请求单个文档并检查当前付款期限是否已过期。

我应该:

  • 检查每一个用户登录的时间,使他们无法“记住我”超过X小时,其中x是一个相对较小的数字吗?

  • 检查用户经常访问的一些中央控制器操作 - 如果这些操作不可用,应用程序将基本上受到严格限制。

  • 做一个全局动作过滤器来检查每一个请求,然后重定向到“Pay nooooow!”页面尽快过期?

  • 另一种选择?

RavenDB确实聪明缓存,所以我不认为这个文件将杀死性能的要求,而是应该应用真正起飞(不太可能,但一个可以梦想),每http请求额外的数据库请求可能会导致艾恩德狩猎我,无情地击败我。我不想那样。

在我看来,这是别人会想到并解决的问题,所以我问 - 什么才是正确的方法来处理这个问题?

感谢您的任何见解!

回答

1

我不认为这是一个严格的框架问题,它更像是你希望你的网站的行为,然后使用框架来支持它。一般而言,您希望使网站可用并且不受太多限制,除非必要时在没有任何限制的情况下浏览网站,但检查应该非常安全地完成。

+0

嗨,谢谢你的回复。我理解并同意你的意见,但是,我之后(我可能对此没有足够清楚)基本上是如何(技术上)在MVC中实现检查。该应用程序将是一个付费应用程序,并且当付款已过期时,我需要提醒用户,除非他们付费,否则他们不能再使用该应用程序。我当然不希望成为一个$$,但我需要一些方法来拒绝访问用户不再允许使用的资源。开始倾向于全局属性和会话变量,methinks .. –

+0

您可以在操作上使用自定义属性,也可以使用基于角色的安全属性。例如:[Role =“PayingCustomer”](不是确切的属性),您可以通过后端检查客户是否确实仍然是付费客户。 –

相关问题