我正在使用这种结构的MVC应用程序:
Request
V
FrontController <-> Router
V
Controller <-> Model
V
View
Run Code Online (Sandbox Code Playgroud)
我还需要在此结构中放置另外两个组件:
Authentification:使用$_SESSION全局变量记录用户;RBAC:基于角色的访问控制,可以检查角色是否具有授予"ressource"(Controller方法)的访问权限.每个用户都可以拥有任意数量的角色(他们也可以没有角色).
现在,我需要将这两个组件放在我的应用程序中,我需要它们能够:
User未进行authed并且Request需要User执行authed ,则应将客户端重定向到登录页面;RBAC看到authed User没有一个角色具有授予执行方法所需的"ressource"访问权限的角色,那么仍然应该执行该Controller方法,Controller但知道该方法User没有这样做的权限(示例:A User撰写文章但没有权利发布它,因此文章将保存为草稿,并User告知Moderator必须发布它).我已经有一些想法可以找到它Authentification,RBAC但我不确定:
Authentification可以进入FrontController或者Router;RBAC可以进入FrontController或Controller.我看到有人把它RBAC放在模型中,但我不明白为什么.
我想对这个问题有一些见解.我应该在哪里放置Authentification和 …
我有一个 PHP 应用程序,它有一个路由器,它应该有两个默认处理程序401 Unauthorized和404 Not Found。
但也有可能没有为这两种情况设置处理程序。在这种情况下,我需要有一个默认响应,告诉Request Unhandled我已将其设置为响应代码400 Bad Request,但我觉得它不是真正合适的。
对于未处理的请求,我应该使用什么响应代码?
我有一个简单的PHP MVC框架,它以这种方式工作:
StaticFramework (1)
|
V
DIC (2)
|
V
HTTPRequest
|
V
App <-> Router
|
V
Controller <-> Model
|
V
View
|
V
HTTPResponse
Run Code Online (Sandbox Code Playgroud)
(1) StaticFramework是一个静态的"前端控制器",它给出了App它的默认依赖性(2) DIC(依赖注入容器),它的工作方式与Pimple类似.可以访问容器以更改这些默认依赖项.例如,Router类被注入App了DIC.
我有一个问题,因为它是一个MVC应用程序,我有3个重要的层:
注入View很容易,因为它只是一个有一个render呈现PHP或HTML文件的方法的类,所以我只需要View在我的注入一个实例Controller.
但注入Model的Controller似乎更难.每个Model都是一个单独的类,所以我不能像我那样注入它View.每个人Model也可能需要其他依赖,例如a Database或XML类.
此外,我无法预测Controller将需要哪些型号,因为它可能需要其中的几种,例如,ArticleController需要ArticleModel和UsersModel. …
php model-view-controller dependencies dependency-injection inversion-of-control