This question already has answers here:
How can I implement an Access Control List in my Web MVC application?
(3个答案)
4年前关闭。
我正在使用这种结构的MVC应用程序:
我需要在此结构中放置两个其他组件:
每个用户可以具有任何给定数量的角色(他们也可以没有任何角色)。
现在,我需要将这两个组件放置在我的应用程序中,我需要它们能够:
如果未认证 如果
我已经有了一些在哪里找到
我看到有人将
我想对这个问题有一些见识。我应该在哪里放置
谢谢!
(3个答案)
4年前关闭。
我正在使用这种结构的MVC应用程序:
Request
V
FrontController <-> Router
V
Controller <-> Model
V
View
我需要在此结构中放置两个其他组件:
Authentification
:使用$_SESSION
全局变量登录用户; RBAC
:基于角色的访问控制,可以检查角色是否具有授予“资源”的访问权限(Controller
方法)。 每个用户可以具有任何给定数量的角色(他们也可以没有任何角色)。
现在,我需要将这两个组件放置在我的应用程序中,我需要它们能够:
User
,并且Request
需要执行已认证的User
,则应将客户端重定向到登录页面;否则,客户端将被重定向到登录页面。 RBAC
看到已授权的User
不具有已授予执行Controller
的方法所需的“资源”的访问权限的角色,则仍应执行Controller
的方法,但要知道User
没有拥有这样做的权限(示例:User
撰写文章,但无权发布,因此该文章将另存为草稿,并告知User
必须发布Moderator
)。 我已经有了一些在哪里找到
Authentification
和RBAC
的想法,但是我不确定:Authentification
可以放在FrontController
或Router
中; RBAC
可以放入FrontController
或Controller
中。 我看到有人将
RBAC
放入模型中,但我不明白为什么。我想对这个问题有一些见识。我应该在哪里放置
Authentification
和RBAC
组件?谢谢!
最佳答案
在典型的MVC应用程序中,身份验证检查(即“如果不进行身份验证,则停止并呈现登录页面”)在处理请求的早期就完成了,而业务逻辑(即“如果用户具有此许可权则发生这种情况,否则会发生”)在“C”( Controller )中处理。
大多数框架都有适当的测试机制,例如您描述的身份验证检查-名称有所不同,但我经常看到它称为“中间件”。
基于角色的访问控制纯粹是您的实现。
关于PHP-将RBAC和身份验证放在MVC应用程序中的什么位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39147058/
10-10 10:53