我有一个对订阅属性设置限制的应用程序 i/ea 用户可以有五个项目用于订阅 A,但有十个用于订阅 B
目前,我在链接到创建操作时检查当前使用情况,如果它们超出限制,我不会显示创建新项目的链接。在视图(对于新项目)上,我再次运行检查(在帮助程序中)以查看他们是否可以创建新项目,如果不能,我会显示一条消息说明如此和一点升级链接。
这是阻止用户绕过订阅属性限制的安全方法吗?
直接 PUT 请求等呢?
我有一个对订阅属性设置限制的应用程序 i/ea 用户可以有五个项目用于订阅 A,但有十个用于订阅 B
目前,我在链接到创建操作时检查当前使用情况,如果它们超出限制,我不会显示创建新项目的链接。在视图(对于新项目)上,我再次运行检查(在帮助程序中)以查看他们是否可以创建新项目,如果不能,我会显示一条消息说明如此和一点升级链接。
这是阻止用户绕过订阅属性限制的安全方法吗?
直接 PUT 请求等呢?
您还可以验证用户的订阅是否允许在创建新项目时启动新项目。这保证即使他们直接发布到 new_project_path 他们也会得到一个错误。
class Project
belongs_to :user
validate_on_create :subscription_allows_new_project
def subscription_allows_new_project
unless self.user.subscription.max_projects > self.user.projects.count
errors.add_to_base("Project limit reached, please upgrade today!")
end
end
end
如果您对 put 请求非常谨慎,您可以简单地创建一个在所有页面中调用的辅助方法。
<% if has_user_hit_project_limits %>
Upgrade Now!
<% else %>
Add project
<% end %>
def has_user_hit_project_limits
if #logic
true
else
false
end
end