小编Inf*_*ien的帖子

PHP - 在MVC应用程序中放置RBAC和Authentification的位置?

我正在使用这种结构的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可以进入FrontControllerController.

我看到有人把它RBAC放在模型中,但我不明白为什么.

我想对这个问题有一些见解.我应该在哪里放置Authentification和 …

php authentication model-view-controller acl rbac

5
推荐指数
1
解决办法
401
查看次数

在未处理的请求上发送哪个 HTTP 响应代码

我有一个 PHP 应用程序,它有一个路由器,它应该有两个默认处理程序401 Unauthorized404 Not Found

但也有可能没有为这两种情况设置处理程序。在这种情况下,我需要有一个默认响应,告诉Request Unhandled我已将其设置为响应代码400 Bad Request,但我觉得它不是真正合适的。

对于未处理的请求,我应该使用什么响应代码?

php http httpresponse httprequest

1
推荐指数
1
解决办法
872
查看次数

PHP - 正确地在控制器中注入模型

我有一个简单的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类被注入AppDIC.

我有一个问题,因为它是一个MVC应用程序,我有3个重要的层:

  • 模型;
  • 视图;
  • 控制器.

注入View很容易,因为它只是一个有一个render呈现PHP或HTML文件的方法的类,所以我只需要View在我的注入一个实例Controller.

但注入ModelController似乎更难.每个Model都是一个单独的类,所以我不能像我那样注入它View.每个人Model也可能需要其他依赖,例如a DatabaseXML类.

此外,我无法预测Controller将需要哪些型号,因为它可能需要其中的几种,例如,ArticleController需要ArticleModelUsersModel. …

php model-view-controller dependencies dependency-injection inversion-of-control

-3
推荐指数
1
解决办法
186
查看次数