fix: convert user_id to string for JWT sub claim (JWT spec requirement)
This commit is contained in:
@@ -48,7 +48,7 @@ def create_access_token(user_id: int, username: str, role: str, expires_delta: O
|
|||||||
expire = datetime.now(timezone.utc) + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
|
expire = datetime.now(timezone.utc) + timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
|
||||||
|
|
||||||
to_encode = {
|
to_encode = {
|
||||||
"sub": user_id,
|
"sub": str(user_id), # JWT spec requires sub to be a string
|
||||||
"username": username,
|
"username": username,
|
||||||
"role": role,
|
"role": role,
|
||||||
"exp": expire,
|
"exp": expire,
|
||||||
@@ -70,7 +70,7 @@ async def get_current_user(credentials = Depends(security)):
|
|||||||
log.debug(f"[AUTH] Using SECRET_KEY (first 10 chars): {SECRET_KEY[:10] if SECRET_KEY else 'None'}")
|
log.debug(f"[AUTH] Using SECRET_KEY (first 10 chars): {SECRET_KEY[:10] if SECRET_KEY else 'None'}")
|
||||||
try:
|
try:
|
||||||
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
|
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
|
||||||
user_id: int = payload.get("sub")
|
user_id: int = int(payload.get("sub")) # sub is stored as string, convert back to int
|
||||||
username: str = payload.get("username")
|
username: str = payload.get("username")
|
||||||
role: str = payload.get("role")
|
role: str = payload.get("role")
|
||||||
log.debug(f"[AUTH] Token valid — user_id={user_id}, username={username}, role={role}")
|
log.debug(f"[AUTH] Token valid — user_id={user_id}, username={username}, role={role}")
|
||||||
|
|||||||
Reference in New Issue
Block a user