【问题标题】:Authentication Middleware Slim 3.0认证中间件 Slim 3.0
【发布时间】:2017-10-11 00:39:47
【问题描述】:

如果没有设置会话,我正在使用中间件重定向到登录页面。

$app->get('/dashboard', function (Request $request, Response $response, $args) {
include_once('employee-portal/dashboard.php');
return $response;})->add(new AuthMiddleware('counter', true, $app->getContainer()));

和我的中间件:

class AuthMiddleware implements MiddlewareInterface{
private $min_role = 'counter';
private $redirect = true;
private $container = null;
public function __construct($role_required, $login_redirect, $container)
{
    $this->min_role = $role_required;
    $this->redirect = $login_redirect;
    $this->container = $container;
}
public function __invoke($request, $response, $next)
{
    if ($this->userIsAuthorised()) {
        return $next($request, $response);
    } else {
        if ($this->redirect) {
            /**
             * @var \Slim\Router router`
             */
            return $response->withRedirect(Details::getBaseUrl() . '/login' . '?ref=' . $request->getUri());
        }

        return $response->withStatus(401)->write("Sorry boss you are not authorised to see my secret");
    }

}

private function userIsAuthorised()
{
    if ($this->min_role == 'counter') {
        return true;
    } else if (SessionManager::isLoggedIn()) {
        if ($_SESSION['user_type']=='counter') {
            return true;
        }
    }
    return false;
}  }

但这不起作用。 我什至可以在没有登录的情况下看到仪表板页面。即使登录后我也无法访问$_SESSION['user_type'] 会话变量。

任何帮助都会得到帮助。提前致谢。

【问题讨论】:

  • 我在任何地方都没有看到session_start()
  • 它在命名空间中被调用。会话管理器::isLoggedIn();
  • 这是在你的中间件类中调用的吗?
  • 是的。我刚刚编辑了我的代码。请看看。

标签: php session slim slim-3


【解决方案1】:

您将'counter' 传递给您的AuthMiddleware 构造函数,导致它在userIsAuthorised() 方法的第一个if() 语句中始终为return true

if ($this->min_role == 'counter') 

将始终为真,因为您在构造函数中设置了$this->min = 'counter'。尝试重写 new AuthMiddleware() 和构造函数,以便您只需传入容器。在致电new AuthMiddleware() 之前,您可以执行以下操作: $container['min_role'] = 'counter' 如果您在应用程序的其他地方需要它。

【讨论】:

    猜你喜欢
    • 2016-11-07
    • 2023-03-09
    • 2020-03-11
    • 2013-10-02
    • 2017-12-30
    • 1970-01-01
    • 2022-08-03
    • 2012-07-13
    • 2016-04-27
    相关资源
    最近更新 更多