the Asynchronous Server Gateway Interface.
python conda
conda相当于虚拟机,在里面安装python和依赖
查看环境
1
conda env list
新建环境
1
conda create --name your_env_name
指定python版本
1
conda create --name xxx python=3.10
激活环境
1
conda activate xxx
删除环境
1
conda remove --name xxx --all
SSO (single sign-on) keycloak
SSO (single sign-on)
keycloak
前提
- 需要jdk9以上环境
config server
编辑
/conf/keycloak.conf
,配置mysql连接信息 (mysql创建keycloak库)配置
admin cli
环境变量 (方便直接命令操作,等同于界面操作)1
2
3# keycloak
export KCADM="/Users/dongwei/Applications/keycloak-23.0.3/bin/kcadm.sh"
export HOST_FOR_KCADM=localhost
bootstrap
首次启动
KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=xxxxxx ./bin/kc.sh start-dev
后续启动
./bin/kc.sh start-dev
生效
KCADM
$KCADM config credentials --server http://localhost:8080 --realm master --user admin
提示输入密码即可 (1sou2sou)
验证 $KCADM get serverinfo
config realm
创建新的realm
$KCADM create realms -s realm="jarvex" -s enabled=true
config clients
1 | $KCADM create clients -r jarvex -s clientId="jarvex-client-test-1" -s enabled=true -s name="test Client 1" -s protocol=openid-connect -s publicClient=true -s standardFlowEnabled=true -s 'redirectUris=["http://127.0.0.1:8001/app/*"]' -s baseUrl="http://127.0.0.1:8001/app/" -s 'webOrigins=["*"]' |
python auth - fastapi jwt auth
在 FastAPI JWT Auth 中,Refresh Token(刷新令牌)和 Access Token(访问令牌)是两种不同的令牌,用于实现认证和授权机制。
- Access Token(访问令牌):Access Token 是一个短期的令牌,用于验证用户的身份并授权用户访问受保护的资源。Access Token 是通过用户提供的凭证(如用户名和密码)进行身份验证后生成的,通常具有较短的有效期(例如几分钟或几小时)。客户端在每次请求受保护的资源时,需要在请求的头部或请求参数中携带 Access Token,以证明其有权访问该资源。
- Refresh Token(刷新令牌):Refresh Token 是一个长期有效的令牌,用于在 Access Token 过期后重新获取新的 Access Token。当 Access Token 过期时,客户端可以使用 Refresh Token 向服务器发送请求来获取新的 Access Token,而无需重新提供用户名和密码等凭证。通常情况下,Refresh Token 的有效期要比 Access Token 更长。
使用 Refresh Token 的主要目的是增强安全性和减少频繁的身份验证操作。通过将 Access Token 的有效期设置较短,可以降低令牌泄露的风险。当 Access Token 过期时,使用 Refresh Token 获取新的 Access Token,这样可以减少频繁地要求用户重新提供凭证的情况。
一般的流程是,客户端在进行身份验证后会收到一个 Access Token 和一个 Refresh Token。客户端使用 Access Token 来访问受保护的资源,当 Access Token 过期时,客户端使用 Refresh Token 向服务器请求新的 Access Token。
FastAPI JWT Auth 提供了相应的功能和装饰器来处理 Access Token 和 Refresh Token 的生成、验证和刷新等操作,以方便实现 JWT 认证和授权。
refresh tokens cannot access an endpoint that is protected with jwt_required(), jwt_optional(), and fresh_jwt_required()
access tokens cannot access an endpoint that is protected with jwt_refresh_token_required().
Refresh Tokens
These are long-lived tokens which can be used to create a new access tokens once an old access token has expired.
git mergetool
vimdiff
进入冲突解决窗口
1 | git mergetool |
窗口显示四部分内容
LOCAL – this is file from the current branch
BASE – common ancestor, how file looked before both changes
REMOTE – file you are merging into your branch
MERGED – merge result, this is what gets saved in the repo
移动窗口方法
1 | Ctrl w + h # move to the split on the left |
处理冲突
可移动到merge窗口去手动改
使用命令
1
2
3:diffg RE # get from REMOTE
:diffg BA # get from BASE
:diffg LO # get from LOCAL
保存退出
1 | :wqa |
Meld
todo
machine learning
RBAC model
fastapi learn
python venv
虚拟环境
在 Linux 中配置 Python 项目的运行虚拟环境通常使用 venv
(虚拟环境)模块。以下是一般的步骤:
安装 venv 模块(如果尚未安装):
检查你的 Python 版本并确保安装了
venv
模块。创建虚拟环境:
在项目目录中,运行以下命令创建一个名为
myenv
的虚拟环境:1
python3 -m venv myenv
这将在当前目录创建一个名为
myenv
的虚拟环境文件夹。激活虚拟环境:
激活虚拟环境可通过以下命令:
1
source myenv/bin/activate
这将激活名为
myenv
的虚拟环境。激活后,你的终端提示符可能会显示虚拟环境的名称。安装项目依赖:
在激活的虚拟环境中,使用
pip
安装项目所需的依赖:1
pip install -r requirements.txt
其中
requirements.txt
是包含项目依赖项的文件。退出虚拟环境:
当你完成项目工作后,可以通过以下方式退出虚拟环境:
1
deactivate
这将使虚拟环境退出,并恢复到系统默认环境。
使用虚拟环境有助于隔离项目的依赖,避免与系统其他项目的依赖冲突,并提供更干净的开发环境。
uvicorn
正常情况下虚拟环境 /path/to/venv/bin/ 下面是有 uvicorn 的启动命令的,即 /xxx/venv/bin/uvicorn
如果当前虚拟环境不识别uvicorn
,可通过
- 方式一
1 | python -m uvicorn xxx:app --reload |
- 方式二
1 | pip install --force-reinstall uvicorn |
python pyenv
1 | # 查看当前版本 |
- 当前项目使用的pyenv版本会在
.python-version
文件中体现
reference