<경영님이 알려주신 방법>
import functools
# 라우팅 함수에 @login_required 이너테이션 지정
@bp.before_app_request
def load_logged_in_user():
user_id=session.get('member_id')
if user_id is None:
# g는 플라스크 컨텍스트 변수
# 플라스크라는 모듈에서 g라는 전역 변수를 받음
g.user=None
else:
# session 변수에 user_id값이 있으면 db에서 사용자 조회해서 g.user에 저장
# 이러면 세션을 조사할 필요가 없고. g.user에 값이 있는지 확인하면 됨.
g.user=Member.query.get(user_id) #user의 객체가 저장됨
# session.clear()
def login_required(view):
@functools.wraps(view)
def wrapped_view(*args, **kwargs):
# g.use가 있는지 조사 후, 있으면 원래 함수 실행
# 없으면 로그인 url 다이렉트
if g.user is None:
_next = request.url if request.method == 'GET' else ''
return redirect(url_for('member.login', next=_next))
return view(*args, **kwargs)
return wrapped_view