小编ale*_*exw的帖子

这是实现访问控制的好策略吗?

我想实现一个数据库驱动的访问控制系统。我一直在阅读有关 ACL、角色、RBAC 等的内容,但似乎最常见的方案有一些主要缺点。例如,在实现细粒度访问控制(例如,允许某个角色仅更新特定记录的特定列)时,RBAC 似乎很笨拙。

如果我像这样构建访问控制列表会怎样:

| role  | table | action | columns  | conditions        |
| ----- | ----- | ------ | -------- | ----------------- |
| user  | user  | view   | name, id | self.id = user.id |
| user  | user  | update | password | self.id = user.id |
| admin | user  | update | *        |                   |
| admin | user  | create | *        |                   |
| admin | user  | delete …
Run Code Online (Sandbox Code Playgroud)

acl crud rbac database-driven

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

Slim 基本认证

今天是个好日子!

我在这里有一个带有slim-basic-auth的工作超薄代码,当我转到受限目录时,会显示:

在此处输入图片说明

一切正常,但我想要做的是将其重定向到我的登录页面,而不是显示弹出登录框。这是我的登录页面:

在此处输入图片说明

我的苗条代码:

$pdo = new \PDO("mysql:host=localhost;dbname=databasename", "username");
$app->add(new \Slim\Middleware\HttpBasicAuthentication([
    "path" => "/main",
    "realm" => "Protected",
    "authenticator" => new PdoAuthenticator([
        "pdo" => $pdo,
        "table" => "accounts",
        "user" => "accountUsername",
        "hash" => "accountPassword"
    ]),
    "callback" => function ($request, $response, $arguments) use ($app) {
        return $response->withRedirect('/main/contacts');
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试使用弹出登录框登录时,它可以工作,但我真的想将它重定向到我的登录页面而不是那个页面。

任何帮助将非常感激。

php basic-authentication slim

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

Slim Framework 3 - 如何将 $logger 注入路由控制器

我正在使用 Slim Framework 3。我想将$logger定义的dependencies.php注入到路由器控制器类中。下面是我所做的,有没有更好的方法?

路由文件

$app->get('/test', function($request, $response, $args){
  $controller = new AccountController($this->get('logger'));
  return $controller->test($request, $response, $args);
});
Run Code Online (Sandbox Code Playgroud)

AccountController

class AccountController{

    private $logger;
    function __construct($logger){
        $this->logger = $logger;
    }

    public function test($request, $response, $args){
        $this->logger->info('i am inside controller');
        return $response->withHeader('Content-Type', 'application/json')->write('test');
    }
}
Run Code Online (Sandbox Code Playgroud)

在 Slim Framework 3 文档中,使用路由控制器的正确方法应该是:

$app->get('/test', 'AccountController:test');
Run Code Online (Sandbox Code Playgroud)

但是,$logger当我选择以这种更“优雅”的方式编写我的路由控制器时,我该如何注入AccountController 呢?

php dependency-injection slim slim-3

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

Slim Framework:路由和控制器

最初,我的Slim Framework应用程序具有经典结构

(的index.php)

<?php
$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
    echo "Hello, $name";
});
$app->run();
Run Code Online (Sandbox Code Playgroud)

但是当我添加更多路由和路由组时,我转向基于控制器的方法:

的index.php

<?php
$app = new \Slim\Slim();
$app->get('/hello/:name', 'HelloController::hello');
$app->run();
Run Code Online (Sandbox Code Playgroud)

HelloController.php

<?php
class HelloController {
    public static function hello($name) {
        echo "Hello, $name";
    }
}
Run Code Online (Sandbox Code Playgroud)

这是有效的,它有助于组织我的应用程序结构,同时让我为每个控制器方法构建单元测试.

但是,我不确定这是正确的方法.我觉得我在mount特殊的基础上嘲笑Silex的方法,这不可能是好的.在每个Controller方法中使用$ app上下文需要我使用\ Slim\Slim :: getInstance(),这似乎不如使用$ app那样有效.

那么......是否存在一种既能提高效率又能实现订单效率的解决方案,还是以路径/封闭梦魇为代价来提高效率?

php slim

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

Nginx配置Slim Framework API路由

我已经坚持了很长一段时间了.基本上,我在我的Slim Framework App中有一个路由文件,用于路由我的API,然后我可以像这样访问路由:"index.php/api/route".这适用于apache或php -S.但是现在当我使用php5-fpm迁移到nginx服务器时,我遇到了正确配置站点的问题.我可以访问index.php,但之后的任何内容都是404.检查日志会给我"没有这样的文件或文件夹"或"不是目录".这是我当前的配置:

server {
  listen 80;
  listen [::]:80 default_server ipv6only=on;
  server_name www.site.com;
  root /var/www/site;
  index index.php;

  error_log /var/log/nginx/site.error.log;
  access_log /var/log/nginx/site.access.log;

  location ~ \.php$ {
    fastcgi_connect_timeout 5s;
    fastcgi_read_timeout 10s;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    #fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_index index.php;
    include fastcgi_params;
    #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}
Run Code Online (Sandbox Code Playgroud)

我用注释掉的线条进行了测试,没有成功.有任何想法吗?

php nginx slim

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

PHP Slim框架创建控制器

我正在使用Slim框架创建API.目前我使用单个文件来创建路由并向其传递闭包:

$app->get('/', function($req, $resp){
//Code...
})
Run Code Online (Sandbox Code Playgroud)

但我意识到我的文件发展迅速.我想要做的是使用控制器,所以我将有一个控制器类,只需将实例/静态方法传递给路由,如下所示

class HomeController
{
   public static function index($req, $resp){}
}
Run Code Online (Sandbox Code Playgroud)

然后将函数传递给路由

$app->get('/', HomeController::index);
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但它不起作用,我想知道是否有一种方法可以用它来管理我的文件.

php controller slim slim-3

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

如何使用 Slim 框架电子邮件功能发送电子邮件?

如果用户从 IOS 应用程序向我的 Web 应用程序进行 API 调用,我想向他们发送一封电子邮件。

IEhttp://testurl.com/forgotpassword/test@email.com

在上面的 url 中,“test@email.com”是我想要向其发送电子邮件的用户电子邮件,其中包含指向电子邮件正文中另一个 URL 的链接。例如,http://testurl.com/resetpassword/test@email.com_44646464646

我的 Web 应用程序使用 Slim 框架,我计划在其中定义以下路由:

$app->get('/forgotpassword/:id', function($id) use ($app) {
    // from here i want to send email 
}

$app->get('/resetpassword/:id/:param', function($id, $param) use ($app) {
    // from here i want to update password
}
Run Code Online (Sandbox Code Playgroud)

如何使用 Slim 发送电子邮件?

php email slim

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

如何检查控制器slim-framework中的url

我有问题 slim

我有控制器,并且2个路径发送到该控制器.

  1. 页面html与teig.
  2. api并在json中显示.

现在我需要检查,如果我请求这个网址: /product/{slug}

返回树枝(我回来了).

如果我要求url:api/product/{slug} 给我json(我做返回).

现在我不知道如何请求if.以及我如何知道检查哪个url请求该控制器.

php url slim slim-3

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

在CSS3中,声明块之间的逗号是什么意思?

是的,我们都知道选择器之间逗号是什么意思.

这是不同的.我以为我非常了解CSS,但今天我遇到了一些我以前从未见过的东西 - 声明块之间的逗号.我一直在使用clean-css,它生成了这个缩小的清理输出(为了便于阅读,我重新插入了一些空格):

body .container
{
    color:#EEE
}
,
.navbar-default .navbar-nav>.active>a:hover,
h1
{
    color:#000
}
Run Code Online (Sandbox Code Playgroud)

注意在声明块中的结束花括号之后的逗号(我已放置在它自己的行上)body .container.这是有效的CSS吗?如果是这样,这是什么意思?

我对clean-css的输入CSS如下:

body .container {
  color: #EEEEEE;
}

h1{
  color: #000;
}

.navbar-default .navbar-nav > .active > a:hover, {
    color: black;
}
Run Code Online (Sandbox Code Playgroud)

css minify css3 clean-css

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

如何限制对phpMyAdmin中特定数据库用户帐户的访问?

我希望能够限制对特定数据库用户帐户的访问,或者阻止特定数据库用户帐户通过phpMyAdmin登录。如何配置phpMyAdmin来做到这一点?

具体来说,我正在运行phpMyAdmin Ubuntu服务器。我想知道如何在phpMyAdmin 本身级别而不是通过Web服务器或OS进行配置。

php mysql ubuntu access-control phpmyadmin

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