3 级身份验证/中间件 Laravel
3 Levels of Authentication / Middleware Laravel
场景
我正在构建一个提供 3 级付费服务的应用程序,但我不确定如何编写 3 级功能的代码。
因此,例如,如果我的应用程序允许用户 post 页面内容,并且 3 个级别允许您每月 post 1,5 和 10 次,我会设置一个存储数据的数据库,然后创建中间件来检查 posted 的次数/用户 post 级别等。我只是不是 100% 确定我正在做这件事,并且想知道是否 laravel 提供了我可能忽略的任何替代方案。
问题
我应该使用中间件来控制用户级别,还是 laravel 提供替代的和更具体的方法?
考虑实施与每个会员级别相对应的用户角色(即第一个角色可以是 'basic user',第二个角色可以是 'intermediate user',第三个角色可以是 'advanced user' ) 如果您不想采用建议的策略路线。可以使用 Entrust and Sentinel 等现有包在 Laravel 中设置角色。在你的用户 table 中,你应该有一个用户名和角色 ID(一个角色的外键),在你的 posts table 你应该有一个用户 ID(一个角色的外键)用户)为每个 post 和您的角色 table 存储每个角色的 post 限制(或将其作为 constant/config 存储在应用程序中的某处)。当用户尝试创建新的 post 时,您可以对他们已经提交的所有 post 进行计数,例如
App\User::findById(1)->posts->count();
或者如果您不想实际加载它们,请考虑使用 withCount()。然后检查用户被限制为多少 post,例如
User::findById(1)->role->postLimit
两者之间的比较应该可以让您确定用户是否能够继续 posting。
场景
我正在构建一个提供 3 级付费服务的应用程序,但我不确定如何编写 3 级功能的代码。
因此,例如,如果我的应用程序允许用户 post 页面内容,并且 3 个级别允许您每月 post 1,5 和 10 次,我会设置一个存储数据的数据库,然后创建中间件来检查 posted 的次数/用户 post 级别等。我只是不是 100% 确定我正在做这件事,并且想知道是否 laravel 提供了我可能忽略的任何替代方案。
问题
我应该使用中间件来控制用户级别,还是 laravel 提供替代的和更具体的方法?
考虑实施与每个会员级别相对应的用户角色(即第一个角色可以是 'basic user',第二个角色可以是 'intermediate user',第三个角色可以是 'advanced user' ) 如果您不想采用建议的策略路线。可以使用 Entrust and Sentinel 等现有包在 Laravel 中设置角色。在你的用户 table 中,你应该有一个用户名和角色 ID(一个角色的外键),在你的 posts table 你应该有一个用户 ID(一个角色的外键)用户)为每个 post 和您的角色 table 存储每个角色的 post 限制(或将其作为 constant/config 存储在应用程序中的某处)。当用户尝试创建新的 post 时,您可以对他们已经提交的所有 post 进行计数,例如
App\User::findById(1)->posts->count();
或者如果您不想实际加载它们,请考虑使用 withCount()。然后检查用户被限制为多少 post,例如
User::findById(1)->role->postLimit
两者之间的比较应该可以让您确定用户是否能够继续 posting。