3级认证/中间件Laravel

时间:2017-02-09 09:43:50

标签: php laravel authentication laravel-middleware

方案

我正在构建一个提供3个级别的付费服务的应用程序,但我不确定如何编写3级功能。

例如,如果我的应用程序允许用户将内容发布到页面,并且3个级别允许您每月发布1,5和10次,那么我只需设置一个存储数据的数据库,然后创建中间件到检查发布的次数/用户发布的级别等。我只是不是100%肯定我正在做这个权利,并且想知道laravel是否提供了我可能忽略的任何替代方案。

问题

我应该使用中间件来控制用户级别,还是laravel提供替代和更具体的方法?

1 个答案:

答案 0 :(得分:1)

考虑实施与每个会员级别相对应的用户角色(即,第一个角色可以是“基本用户”,第二个角色可以是“中间用户”,第三个角色可以如果您不想使用建议的政策路线,请成为“高级用户”。可以使用现有的包(例如EntrustSentinel)在Laravel中设置角色。在您的users表中,您应该有一个用户名和角色ID(角色的外键),在您的posts表中,您应该拥有每个帖子的用户ID(用户的外键),并在您的角色表中存储帖子限制每个角色(或将其作为常量/配置存储在应用程序中的某个位置)。当用户尝试创建新帖子时,您可以计算他们已经提交的所有帖子,例如

App\User::findById(1)->posts->count();

如果您不想实际加载它们,请考虑使用withCount()。然后检查用户被限制的帖子数量,例如

User::findById(1)->role->postLimit

两者之间的比较应该允许您确定用户是否能够继续发布。