mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-08 00:46:57 +08:00
feat(auth): add API_TOKEN validation and auto-generation
This commit is contained in:
+14
-1
@@ -5,8 +5,10 @@ from pathlib import Path
|
|||||||
from typing import Optional, List
|
from typing import Optional, List
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
from dotenv import set_key
|
||||||
from pydantic import BaseSettings, validator
|
from pydantic import BaseSettings, validator
|
||||||
|
|
||||||
|
from app.log import logger
|
||||||
from app.utils.system import SystemUtils
|
from app.utils.system import SystemUtils
|
||||||
|
|
||||||
|
|
||||||
@@ -61,7 +63,7 @@ class Settings(BaseSettings):
|
|||||||
# 超级管理员
|
# 超级管理员
|
||||||
SUPERUSER: str = "admin"
|
SUPERUSER: str = "admin"
|
||||||
# API密钥,需要更换
|
# API密钥,需要更换
|
||||||
API_TOKEN: str = "moviepilot"
|
API_TOKEN: Optional[str] = None
|
||||||
# 网络代理 IP:PORT
|
# 网络代理 IP:PORT
|
||||||
PROXY_HOST: Optional[str] = None
|
PROXY_HOST: Optional[str] = None
|
||||||
# 登录页面电影海报,tmdb/bing
|
# 登录页面电影海报,tmdb/bing
|
||||||
@@ -198,6 +200,17 @@ class Settings(BaseSettings):
|
|||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
raise ValueError(f"{value} 格式错误,不是有效数字!")
|
raise ValueError(f"{value} 格式错误,不是有效数字!")
|
||||||
|
|
||||||
|
@validator("API_TOKEN", pre=True, always=True)
|
||||||
|
def validate_api_token(cls, v):
|
||||||
|
if not v:
|
||||||
|
new_token = secrets.token_urlsafe(16)
|
||||||
|
logger.info(f"API_TOKEN 未设置,已随机生成新的 API_TOKEN:{new_token}")
|
||||||
|
set_key(str(SystemUtils.get_env_path()), "API_TOKEN", new_token)
|
||||||
|
return new_token
|
||||||
|
elif len(v) < 16:
|
||||||
|
logger.warning("API_TOKEN 长度不足 16 个字符,存在安全隐患,建议尽快更换为更复杂的密钥!")
|
||||||
|
return v
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def INNER_CONFIG_PATH(self):
|
def INNER_CONFIG_PATH(self):
|
||||||
return self.ROOT_PATH / "config"
|
return self.ROOT_PATH / "config"
|
||||||
|
|||||||
+2
-2
@@ -29,8 +29,8 @@ DOH_RESOLVERS=1.0.0.1,1.1.1.1,9.9.9.9,149.112.112.112
|
|||||||
META_CACHE_EXPIRE=0
|
META_CACHE_EXPIRE=0
|
||||||
# 自动检查和更新站点资源包(索引、认证等)
|
# 自动检查和更新站点资源包(索引、认证等)
|
||||||
AUTO_UPDATE_RESOURCE=true
|
AUTO_UPDATE_RESOURCE=true
|
||||||
# 【*】API密钥,建议更换复杂字符串,有Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API中使用
|
# 【*】API密钥,未设置时系统将随机生成,建议使用复杂字符串,用于Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API请求
|
||||||
API_TOKEN=moviepilot
|
API_TOKEN=''
|
||||||
# 登录页面电影海报,tmdb/bing,tmdb要求能正常连接api.themoviedb.org
|
# 登录页面电影海报,tmdb/bing,tmdb要求能正常连接api.themoviedb.org
|
||||||
WALLPAPER=tmdb
|
WALLPAPER=tmdb
|
||||||
# TMDB图片地址,无需修改需保留默认值,如果默认地址连通性不好可以尝试修改为:`static-mdb.v.geilijiasu.com`
|
# TMDB图片地址,无需修改需保留默认值,如果默认地址连通性不好可以尝试修改为:`static-mdb.v.geilijiasu.com`
|
||||||
|
|||||||
Reference in New Issue
Block a user