Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa HTTPException(status_code=status.HTTP_401_UNAUTHORIZED,detail=\'Tidak cukup kebenaran\',headers={\'WWW-Authenticate\': authenticate_value},) dan cara menyelesaikannya
. Biasanya Kerana pengguna yang meminta tidak mempunyai kebenaran yang mencukupi untuk melaksanakan operasi. Ini mungkin kerana pengguna tidak log masuk atau log masuk telah tamat tempoh, atau pengguna tidak mempunyai kebenaran yang mencukupi untuk mengakses sumber.
Ralat ini boleh dilemparkan ke dalam kod anda dengan membuang HTTPException, atau ia mungkin disebabkan oleh kebenaran pengguna yang tidak mencukupi yang diminta.
Contohnya:
from fastapi import FastAPI, HTTP
Pengecualian, bergantungDari Fastapi.Security Import Oauth2passWordBearer
("/app")
")async def create_item(item: Item,Authorization: str = Depends(oauth2_scheme)):if not check_user_has_permission(Authorization):naikkan HTTPException(status_code=status.HTTP_401_detail,IZtED_permission=cukup headers={"WWW-Authenticate": authenticate_value})
kembali {"item": item}在上面的示例中,我们使用 OAuth2PasswordBearer 来验证请求用户是否已经登录,并在路由函数中使用 check_user_has_permission 检查请求用户是否有权限访问该资源,如果用户权限不足,将会抛出 HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Not enough permissions",headers={"WWW-Authenticate": authenticate_value}) 这只是一个简单的示例,具体实现还需根据项目具体需求来实现。Cara menyelesaikanUntuk menyelesaikan masalah ini, anda boleh mengambil salah satu kaedah berikut: Pastikan pengguna telah log masuk dan log masuk belum tamat tempoh. Jika pengguna tidak log masuk atau log masuk telah tamat tempoh, dia perlu log masuk semula. Pastikan pengguna mempunyai kebenaran yang mencukupi untuk mengakses sumber tersebut. Jika pengguna tidak mempunyai kebenaran yang mencukupi, pengguna perlu diberikan kebenaran yang sepadan. Dalam fungsi penghalaan, semak sama ada kebenaran pengguna yang meminta adalah mencukupi. Jika tidak, kembalikan mesej ralat terperinci Jika ia disebabkan oleh masalah kod program, anda perlu menyemak kod yang berkaitan untuk mengesahkan kebenaran pengguna dan membetulkan. masalah. Jika ia disebabkan oleh perpustakaan pihak ketiga, semak dokumentasi perpustakaan yang berkaitan atau minta komuniti untuk mendapatkan penyelesaian. Kaedah ini mungkin tidak sesuai untuk semua situasi, dan penyelesaian khusus perlu ditentukan berdasarkan keadaan khusus projek. Contoh PenggunaanBerikut ialah contoh menggunakan kaedah pengesahan kebenaran terbina dalam FastAPI:
from fastapi import FastAPI, HTTPException, Depends from fastapi.security import OAuth2PasswordBearer app = FastAPI() # define the security scheme for the api oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/token") @app.post("/items/") async def create_item(item: Item, Authorization: str = Depends(oauth2_scheme)): if not check_user_has_permission(Authorization): raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Not enough permissions",headers={"WWW-Authenticate": authenticate_value}) return {"item": item}Dalam contoh di atas, kami menggunakan OAuth2PasswordBearer untuk mengesahkan sama ada pengguna yang meminta dilog masuk dan menggunakan check_user_has_permission dalam fungsi penghalaan untuk menyemak sama ada pengguna yang meminta mempunyai kebenaran untuk mengakses sumber Jika pengguna tidak mempunyai kebenaran yang mencukupi, HTTPException(status_code =status. HTTP_401_UNAUTHORIZED, detail="Tidak cukup kebenaran",headers={"WWW-Authenticate": authenticate_value})dilaksanakan. Dalam contoh ini, kami menggunakan OAuth2PasswordBearer terbina dalam FastAPI untuk mengesahkan pengguna yang meminta. Ia memerlukan tokenUrl untuk menentukan cara mengesahkan token. Dalam contoh di atas, kami menganggap bahawa sudah ada fungsi penghalaan dengan tokenUrl "/token" untuk mengesahkan token. Dalam fungsi penghalaan, kami menggunakan check_user_has_permission untuk menyemak sama ada pengguna mempunyai kebenaran yang mencukupi untuk mengakses sumber. Fungsi ini boleh dilaksanakan mengikut keperluan khusus projek. Contohnya, anda boleh bertanya sama ada pengguna mempunyai kebenaran dalam
pangkalan data
atau membaca peranan pengguna dalam tokenJwt
. Jika pengguna tidak mempunyai kebenaran yang mencukupi, HTTPException akan dilemparkan, respons dengan kod status 401 akan dikembalikan dan medan WWW-Authenticate akan ditetapkan dalam pengepala respons. Dengan cara ini, penyemak imbas atau klien boleh mengenali bahawa pengguna perlu log masuk semula.Atas ialah kandungan terperinci Mengapa HTTPException(status_code=status.HTTP_401_UNAUTHORIZED,detail=\'Tidak cukup kebenaran\',headers={\'WWW-Authenticate\': authenticate_value},) dan cara menyelesaikannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!