首页 > 解决方案 > Slim 框架和 Auth0

问题描述

近 10 年没有使用 PHP,所以非常脱节。我有一个正在处理的项目,它需要一个具有安全身份验证的 Web 前端。根本不需要 API。

Auth0 从认证的角度来说满足了要求,并且提供了很多选择。

我找不到的是如何将它与 Slim 框架集成,有人能指出我正确的方向吗?

在应用程序的背景下,我正在将来自多个 API 源的信息整理到一个数据库中,并希望将其显示出来并添加更多功能。目前大部分内容都显示在办公室周围的 Grafana 仪表板上,但有一些新的需求无法通过仪表板来解决。

Slim 看起来对我来说是合适的工具,我需要一些可以让我很容易地创建页面的东西,我实际上将显示一些图表,但主要是表格和表格来与数据交互。如果 Slim 不合适,很乐意去别处看看。

谢谢

标签: slimauth0

解决方案


根据官方Auth0 文档,我会尝试在 Slim 3 中进行如下设置:

安装

composer require auth0/auth0-php

容器设置

添加一个新的容器工厂条目:

use Auth0\SDK\Auth0;
use Psr\Container\ContainerInterface as Container;

//...

$container[Auth0::class] = function (Container $container) {
    return new Auth0([
        'domain' => 'YOUR_DOMAIN',
        'client_id' => 'YOUR_CLIENT_ID',
        'client_secret' => 'YOUR_CLIENT_SECRET',
        'redirect_uri' => 'https://YOUR_APP/callback',
        'audience' => 'https://YOUR_DOMAIN/userinfo',
        'scope' => 'openid profile',
        'persist_id_token' => true,
        'persist_access_token' => true,
        'persist_refresh_token' => true,
    ]);
};

用法

用户的信息存储在会话中。每次调用 getUser() 时,它都会从会话中检索信息。

use Auth0\SDK\Auth0;

$auth0 = $container->get(Auth0::class);
$userInfo = $auth0->getUser();

if (!$userInfo) {
    // We have no user info
    // redirect to Login
} else {
    // User is authenticated
    // Say hello to $userInfo['name']
    // print logout button
}

注意:不要直接使用容器。实际上最好使用依赖注入。


推荐阅读