SOY NV AI
commited on
Commit
ยท
1cf7ede
1
Parent(s):
a281a37
Fix: Use Flask-Login unauthorized_handler instead of 404 handler for login redirect
Browse files- app/__init__.py +18 -8
app/__init__.py
CHANGED
|
@@ -19,6 +19,17 @@ login_manager.login_view = 'main.login'
|
|
| 19 |
login_manager.login_message = '๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค.'
|
| 20 |
login_manager.login_message_category = 'info'
|
| 21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
|
| 23 |
@login_manager.user_loader
|
| 24 |
def load_user(user_id: str) -> Optional[User]:
|
|
@@ -83,7 +94,7 @@ def create_app() -> Flask:
|
|
| 83 |
logger.warning(f"favicon.ico ์ฒ๋ฆฌ ์คํจ: {e}")
|
| 84 |
return '', 204 # No Content
|
| 85 |
|
| 86 |
-
# 404 ์๋ฌ ํธ๋ค๋ฌ
|
| 87 |
@app.errorhandler(404)
|
| 88 |
def not_found(error):
|
| 89 |
"""404 ์๋ฌ ์ฒ๋ฆฌ"""
|
|
@@ -91,13 +102,12 @@ def create_app() -> Flask:
|
|
| 91 |
# API ์์ฒญ์ธ ๊ฒฝ์ฐ JSON ์๋ต
|
| 92 |
if request.path.startswith('/api/'):
|
| 93 |
return jsonify({'error': '๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.', 'path': request.path}), 404
|
| 94 |
-
#
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
return redirect(url_for('main.index'))
|
| 101 |
|
| 102 |
# ์์ฒญ ๋ก๊น
๋ฏธ๋ค์จ์ด ์ถ๊ฐ
|
| 103 |
@app.before_request
|
|
|
|
| 19 |
login_manager.login_message = '๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค.'
|
| 20 |
login_manager.login_message_category = 'info'
|
| 21 |
|
| 22 |
+
@login_manager.unauthorized_handler
|
| 23 |
+
def unauthorized():
|
| 24 |
+
"""์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์ ์ฒ๋ฆฌ"""
|
| 25 |
+
from flask import redirect, url_for, request
|
| 26 |
+
# API ์์ฒญ์ธ ๊ฒฝ์ฐ JSON ์๋ต
|
| 27 |
+
if request.path.startswith('/api/'):
|
| 28 |
+
from flask import jsonify
|
| 29 |
+
return jsonify({'error': '๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค.'}), 401
|
| 30 |
+
# ์ผ๋ฐ ์์ฒญ์ธ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
|
| 31 |
+
return redirect(url_for('main.login', next=request.path))
|
| 32 |
+
|
| 33 |
|
| 34 |
@login_manager.user_loader
|
| 35 |
def load_user(user_id: str) -> Optional[User]:
|
|
|
|
| 94 |
logger.warning(f"favicon.ico ์ฒ๋ฆฌ ์คํจ: {e}")
|
| 95 |
return '', 204 # No Content
|
| 96 |
|
| 97 |
+
# 404 ์๋ฌ ํธ๋ค๋ฌ (์ค์ ๋ก ์กด์ฌํ์ง ์๋ ๋ผ์ฐํธ์๋ง ์ ์ฉ)
|
| 98 |
@app.errorhandler(404)
|
| 99 |
def not_found(error):
|
| 100 |
"""404 ์๋ฌ ์ฒ๋ฆฌ"""
|
|
|
|
| 102 |
# API ์์ฒญ์ธ ๊ฒฝ์ฐ JSON ์๋ต
|
| 103 |
if request.path.startswith('/api/'):
|
| 104 |
return jsonify({'error': '๋ฆฌ์์ค๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.', 'path': request.path}), 404
|
| 105 |
+
# ์ ์ ํ์ผ ์์ฒญ์ธ ๊ฒฝ์ฐ 404 ๋ฐํ
|
| 106 |
+
if request.path.startswith('/static/'):
|
| 107 |
+
return '', 404
|
| 108 |
+
# ๋ก๊ทธ์ธ ํ์ด์ง๋ 404๊ฐ ์๋ ์ ์ ๋ผ์ฐํธ์ด๋ฏ๋ก ๋ฆฌ๋ค์ด๋ ํธํ์ง ์์
|
| 109 |
+
# Flask-Login์ด ์๋์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ํจ
|
| 110 |
+
return jsonify({'error': 'ํ์ด์ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.', 'path': request.path}), 404
|
|
|
|
| 111 |
|
| 112 |
# ์์ฒญ ๋ก๊น
๋ฏธ๋ค์จ์ด ์ถ๊ฐ
|
| 113 |
@app.before_request
|