inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 처음하는 파이썬 백엔드와 웹기술 입문 (파이썬 중급, flask[플라스크] 로 이해하는 백엔드 및 웹기술 기본) [풀스택 Part1-1]

구독취소와 데이터베이스 핸들링 추가 구현하기

로그아웃 기능 관련해 질문있습니다.

462

beegizee1220

작성한 질문수 5

0

안녕하세요.
로그아웃 관련 질문있어서 글 남깁니다.

  1. 브라우저: safari

  2. 구독 후

  3. safari 브라우저 완전 종료

  4. safari 브라우저 재실행 및 재접속

  5. 구독 상태 유지 (session 365일 설정)

  6. '구독취소'버튼 클릭시
    AttributeError: 'AnonymousUserMixin' object has no attribute 'id'
    에러 발생

혹시 위 현상 관련해서 해결방법이 뭔지 알 수 있을까요?

 PS.

확인해보니, safari를 완전히 종료하고 재실행하면, remember_token 값은 이전 값과 일치하게 존재하는데,
session 값만 바뀌고 있습니다.
이 때문에, 기존의 user 객체를 가져오지 못하는 거 같은데, 이런 현상이 왜 발생하는걸까요?

 

 

- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다)
- 이외의 문의등은 평생강의이므로 양해를 부탁드립니다
- 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

python rest-api flask

답변 1

0

잔재미코딩 DaveLee

안녕하세요. 답변도우미입닏.

AttributeError: 'AnonymousUserMixin' object has no attribute 'id' 오류는 현재 세션에 사용자 정보가 없는 상태에서 구독 취소 버튼을 클릭했을 때 발생하는 것 같습니다.

우선은 Safari 브라우저 쿠키 설정 이슈일수도 있을 듯 한데요. 다음 단계로 한번 확인해보시면 좋을 것 같습니다.

  1. Safari를 열고, 오른쪽 상단의 'Safari' 메뉴를 클릭한 다음 '환경설정'을 선택합니다.

  2. '개인정보' 탭을 클릭합니다.

  3. '쿠키 및 웹 사이트 데이터' 옵션을 확인합니다. '모든 사이트로부터' 옵션을 선택하여 쿠키를 허용합니다.

다음으로 다음 3가지 설정도 확인 또는 추가해보시면 어떠실까요? 물론 몇가지는 이미 설정하신 것으로 이해는 되지만, 혹시 코드 자체에도 이슈가 있을 수 있으니, 한번 확인, 테스트해보셔도 좋을 것 같아요

  1. Flask 애플리케이션에서 permanent_session_lifetime 값을 설정하여 세션 유효 기간을 적절하게 설정하세요. 기본적으로 Flask는 세션을 31일간 유지하도록 설정되어 있지만, 다른 값으로 설정할 수도 있습니다. 예를 들어, 다음 코드는 세션 유효 기간을 365일로 설정합니다.

from datetime import timedelta

app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=365)
  1. 사용자가 로그인할 때 remember 매개 변수를 사용하여 login_user() 함수를 호출하세요. 이렇게 하면 사용자가 로그아웃하거나 브라우저를 종료한 후에도 로그인 상태가 유지됩니다.

from flask_login import login_user

@login.route('/login', methods=['GET', 'POST'])
def login():
    # 로그인 로직
    remember = True  # 또는 request.form.get('remember', False, type=bool) 등을 사용하여 사용자의 입력을 확인
    login_user(user, remember=remember)
  1. Flask-Loginremember_cookie_duration 옵션을 설정하여 'remember me' 쿠키의 유효 기간을 조절할 수 있습니다. 기본값은 365일입니다. 예를 들어, 다음 코드는 유효 기간을 365일로 설정합니다.

from datetime import timedelta

login_manager = LoginManager()
login_manager.remember_cookie_duration = timedelta(days=365)

이외에 Safari의 버전을 확인하고 필요한 경우 업데이트해볼 수 있을 것 같고요. 또 세션 관리를 위해 사용하는 서드파티 라이브러리가 올바르게 작동하는지 확인해보셔도 좋을 것 같습니다.

감사합니다.

강의 자료 어디서 다운받나요? 없는데요..

0

155

1

강의 영상은 안나오고 소리만 나옵니다.

0

179

1

섹션 6 인증 failed 질문

0

155

1

섹션 8 flask 다양한 기능: 다양한 데코레이터 before_first_request 문의

0

362

3

192.168.0.12:8085??

0

156

1

04_flask_ABTest에서 blog_abtest.py 실행 시 오류입니다.

0

172

1

수업내용 질문 건

0

189

1

brew로 mysql 설치 후 서버 실행할 때, 터미널에서 anaconda bin 참조하는 문제

0

670

2

crossorigin 프로퍼티에 대해서 질문드립니다.

0

289

1

강의자료 다운로드 문의드립니다.

1

270

1

갑자기 웹 서버 띄울때 이상하게 나옵니다

0

314

1

가장빠른 Vue와 flask, 그리고 REST API 1 강의 질문입니다. (2)

0

347

1

가장빠른 Vue와 flask, 그리고 REST API 1 강의 질문입니다.

0

323

2

Fast api 추가 강좌 개설여부 질문드립니다!.

0

316

2

flask_cors설치 오류

0

619

2

부스트랩 html 다운

0

258

1

혹시 강의자료 공유가 가능한가요?

0

356

1

소스코드는 어디에 있을까요??

1

255

1

안녕하세요 몇가지 질문이 있습니다.

0

340

1

동적함수생성 질문드립니다.

1

632

2

(강의명) flask 로 Rest API 구현과 테스트 실행 : 오류 문의

0

578

1

백엔드 데코레이터 2 강의에 도전 문제 질문드립니다

0

291

1

몽고 DB 공식홈페이지 403 접속 에러 발생합니다.

1

627

3

04._flask_ABTest Pycharm 에서 실행오류

0

495

1