slim - Slim 框架和 Auth0
问题描述
近 10 年没有使用 PHP,所以非常脱节。我有一个正在处理的项目,它需要一个具有安全身份验证的 Web 前端。根本不需要 API。
Auth0 从认证的角度来说满足了要求,并且提供了很多选择。
我找不到的是如何将它与 Slim 框架集成,有人能指出我正确的方向吗?
在应用程序的背景下,我正在将来自多个 API 源的信息整理到一个数据库中,并希望将其显示出来并添加更多功能。目前大部分内容都显示在办公室周围的 Grafana 仪表板上,但有一些新的需求无法通过仪表板来解决。
Slim 看起来对我来说是合适的工具,我需要一些可以让我很容易地创建页面的东西,我实际上将显示一些图表,但主要是表格和表格来与数据交互。如果 Slim 不合适,很乐意去别处看看。
谢谢
解决方案
根据官方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
}
注意:不要直接使用容器。实际上最好使用依赖注入。
推荐阅读
- css - 悬停的背景颜色变化打破了模拟+显示
- javascript - Javascript - 将 compose 与 reduce 一起使用
- javascript - 是什么促使 chrome devtools 寻找源图
- guice - 如何调试 Guice 类/方法拦截器?
- asp.net-core - 检查表中的多个条目 - ASP.NET Core 3.1 和 EFCore
- apache-calcite - 在哪里设置方解石弹性搜索用户名/密码?
- django - 在 Django 中,html 模板中的 for 循环无法正常工作
- python - 在 Pandas DataFrame 中,如何根据字符串前缀将列表转换为多个列表并保持顺序?[Python]
- java - 使用多个字段将对象添加到集合中作为相等比较,以覆盖现有的 equals 和 hashCode 方法
- bash - 如何从 TMUX 会话中完全关闭终端(Ubuntu bash)?