3 级认证/中间件 Laravel

Posted

技术标签:

【中文标题】3 级认证/中间件 Laravel【英文标题】:3 Levels of Authentication / Middleware Laravel 【发布时间】:2017-06-27 06:03:37 【问题描述】:

场景

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

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

问题

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

【问题讨论】:

Laravel 授权与策略和门。 laravel.com/docs/5.4/authorization @EddyTheDove 这很好,回答了我关于替代方案的问题,但我不知道如何开始实施这个 好吧,中间件仍然有效。你的问题是关于alternative and more specific methods。所以如果你认为它对你来说太复杂了,一切都很好,中间件同样有效。 Si t'as besoin d'un petit example, je peux bien te le montrer。 【参考方案1】:

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

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

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

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

两者之间的比较应该可以让您确定用户是否能够继续发帖。

【讨论】:

这是极具描述性的,正是我正在寻找的那种解释。 Laravel 非常健壮,包含的内容太多,以至于我经常忽略应该使用的方法

以上是关于3 级认证/中间件 Laravel的主要内容,如果未能解决你的问题,请参考以下文章

laravel的中间件

Laravel中间件,管道之面向切面编程

Laravel中间件,管道之面向切面编程

[ Laravel 5.5 文档 ] 处理用户请求 —— HTTP 请求的过滤器:中间件

Laravel 5.3 使用内置的 Auth 组件实现多用户认证功能

白名单域认证 Laravel