我已經通過Flask視圖構建了一個API,用戶使用一些端點在/api/v1/....
處訪問。我想認證提出請求的用戶。什麼是強制使用我的API進行身份驗證的方法?有沒有辦法避免構建用戶模型,而是使用Google或基於Github的身份驗證?基於Flask的API的身份驗證?
-2
A
回答
1
我使用flask-login攔截具有會話的Web請求和具有標題的Web請求。來自Web的請求使用Flask的會話,來自移動應用程序的請求會發送一個標題。
這些方法返回給定請求的用戶。 API token由其危險簽名(防篡改),從而爲Flask的cookies提供支持。
from itsdangerous import URLSafeSerializer, BadData
serializer = URLSafeSerializer(CONFIG['SECRET_KEY'])
def load_user_from_request(request):
token = request.headers.get('API-TOKEN')
if token:
try:
user_id = serializer.loads(token)["id"]
user = User.query.filter(User.active == True, User.id == int(user_id)).first()
if user:
return user
except BadData as e:
pass
return None
def load_user(id):
user = User.query.filter(User.active == True, User.id == int(id)).first()
if not user:
return None
return user
login_manager.user_loader(load_user)
login_manager.request_loader(load_user_from_request)
該端點接受認證請求,檢查用戶名和密碼併發出令牌。其危險的串行器使您的對象的防篡改版本。客戶端提交相同的標題。只要應用程序的密鑰安全,您的服務器就可以確認已簽名的對象是由您的服務器發出的。
@blueprint.route('/api_auth', methods=["post"])
def api_auth():
...check username and password
return response({
'API-TOKEN': serializer.dumps({'id': user.id})
})
相關問題
- 1. 基於不依賴表單身份驗證的基於Cookie的身份驗證
- 2. 基於角度令牌的基於身份驗證的驗證
- 3. 基於證書的身份驗證
- 4. Solr6.3.0 SolrJ API的基本身份驗證
- 5. 與基本身份驗證的HTTP基本身份驗證
- 6. 使用基於SAML的基本身份驗證進行身份驗證?
- 7. 基於Oracle表的身份驗證
- 8. Jconsole基於密碼的身份驗證
- 9. 基於會話的身份驗證
- 10. 基於Spring Boot Token的身份驗證
- 11. 基於表單的身份驗證
- 12. Springboot基於角色的身份驗證
- 13. 基於角色的身份驗證
- 14. 基於Java的用戶身份驗證
- 15. Android - 基於表單的身份驗證
- 16. 基於OAuth的身份驗證方案
- 17. 基於oauth的身份驗證查詢
- 18. PHP:基於JWT的身份驗證
- 19. 基於圖像的身份驗證
- 20. 實現基於REST的身份驗證
- 21. 基於XMLHttpRequest的Windows身份驗證
- 22. 創建基於http的身份驗證
- 23. 基於表單的身份驗證
- 24. 基於Jsch證書的身份驗證和登錄身份驗證取消
- 25. 基於角色的身份驗證與asp.net中的窗口身份驗證
- 26. 對基於JSON的API的監察員身份驗證
- 27. 基於令牌的身份驗證的REST API
- 28. Sinatra的API身份驗證
- 29. API的rails身份驗證
- 30. 身份驗證的Web API
我認爲Flask-OAuth或Flask-OAtuthlib會有幫助。 – stamaimer