https://translate.google.com/translate?hl=ko&sl=en&u=https://flask-login.readthedocs.io/en/latest/&prev=search&pto=aueflask-login.readthedocs.io/en/latest/
플라스크 로그인
Flask-Login은 Flask에 대한 사용자 세션 관리를 제공합니다. 오랜 시간 동안 로그인, 로그 아웃 및 사용자 세션 기억과 같은 일반적인 작업을 처리합니다.
그것은 :
- 활성 사용자의 ID를 세션에 저장하고 쉽게 로그인 및 로그 아웃 할 수 있습니다.
- 보기를 로그인 한 (또는 로그 아웃 한) 사용자로 제한 할 수 있습니다.
- 일반적으로 까다로운 "기억하기"기능을 처리하십시오.
- 쿠키 도둑이 사용자의 세션을 도난 당하지 않도록 보호합니다.
- Flask-Principal 또는 다른 인증 확장 프로그램과 나중에 통합 할 수 있습니다.
그러나 다음과 같은 것은 아닙니다.
- 특정 데이터베이스 나 다른 저장 방법을 사용하십시오. 사용자로드 방법에 대한 책임은 전적으로 귀하에게 있습니다.
- 사용자 이름과 비밀번호, OpenID 또는 기타 인증 방법을 사용하도록 제한하십시오.
- "로그인 여부"이외의 권한을 처리합니다.
- 사용자 등록 또는 계정 복구를 처리합니다.
- 설치
- 응용 프로그램 구성
- 작동 원리
- 귀하의 사용자 클래스
- 로그인 예
- 로그인 프로세스 사용자 정의
- 인증 헤더를 사용하여 로그인
- 요청 로더를 사용한 사용자 정의 로그인
- 익명의 사용자
- 날 기억해
- 대체 토큰
- 새로운 로그인
- 쿠키 설정
- 세션 보호
- API에 대한 세션 쿠키 비활성화
- 현지화
- API 설명서
설치
pip를 사용하여 확장을 설치하십시오.
$ pip install flask-login
귀하의 응용 프로그램 구성
Flask-Login을 사용하는 응용 프로그램에서 가장 중요한 부분은 LoginManager클래스입니다. 다음과 같이 코드 어딘가에 응용 프로그램 용으로 하나를 만들어야합니다.
login_manager = LoginManager()
로그인 관리자에는 ID에서 사용자를로드하는 방법, 로그인해야 할 때 사용자를 보내는 위치 등과 같이 응용 프로그램과 Flask-Login이 함께 작동하도록하는 코드가 포함되어 있습니다.
실제 응용 프로그램 객체가 생성되면 다음을 사용하여 로그인하도록 구성 할 수 있습니다.
login_manager.init_app(app)
기본적으로 Flask-Login은 인증에 세션을 사용합니다. 즉, 응용 프로그램에서 비밀 키를 설정해야합니다. 그렇지 않으면 Flask가이를 알리는 오류 메시지를 표시합니다. 비밀 키를 설정하는 방법 은 세션 의 Flask 설명서 를 참조하십시오.
경고 : “좋은 비밀 키를 생성하는 방법”섹션에서 제공된 명령을 사용하여 자신의 비밀 키를 생성하십시오. 예제를 사용하지 마십시오.
그것이 작동하는 방법
user_loader콜백 을 제공해야합니다 . 이 콜백은 세션에 저장된 사용자 ID에서 사용자 객체를 다시로드하는 데 사용됩니다. unicode사용자 의 ID를 가져와 해당 사용자 개체를 반환해야합니다. 예를 들면 다음과 같습니다.
@login_manager.user_loader def load_user(user_id): return User.get(user_id)
이것은 반환한다 None( 예외를 발생시키지 ID가 유효하지 않은 경우). 이 경우 세션에서 ID가 수동으로 제거되고 처리가 계속됩니다.
사용자 클래스
사용자를 나타내는 데 사용하는 클래스는 다음 속성 및 메서드를 구현해야합니다.
is_authenticatedTrue사용자가 인증 된 경우, 즉 유효한 자격 증명을 제공 한 경우이 속성이 반환되어야합니다 . 인증 된 사용자 만의 기준을 충족합니다 login_required.is_active이 속성은 True활성 사용자 인 경우 인증되는 것 외에도 계정을 활성화했거나 일시 중지하지 않았거나 응용 프로그램이 계정을 거부 한 조건을 반환해야 합니다. 비활성 계정은 로그인 할 수 없습니다 (물론 강제로).is_anonymousTrue익명 사용자 인 경우이 속성이 반환되어야합니다 . (실제 사용자는 False대신 돌아와야 합니다.)get_id()이 메소드는 unicode이 사용자를 고유하게 식별하는 user_loader 콜백을 반환해야 하며 콜백 에서 사용자를로드하는 데 사용할 수 있습니다 . 참고이이 것을 해야한다 일 unicode- ID가 기본적 인 경우 int또는 다른 유형, 당신은으로 변환해야합니다 unicode.
사용자 클래스 구현을보다 쉽게하기 위해 from을 상속하면 UserMixin이러한 모든 속성 및 메서드에 대한 기본 구현이 제공됩니다. (필요하지는 않습니다.)
로그인 예
사용자가 인증되면 login_user 기능 을 사용하여 로그인합니다 .
예를 들면 다음과 같습니다.
@app.route('/login', methods=['GET', 'POST']) def login(): # Here we use a class of some kind to represent and validate our # client-side form data. For example, WTForms is a library that will # handle this for us, and we use a custom LoginForm to validate. form = LoginForm() if form.validate_on_submit(): # Login and validate the user. # user should be an instance of your `User` class login_user(user) flask.flash('Logged in successfully.') next = flask.request.args.get('next') # is_safe_url should check if the url is safe for redirects. # See http://flask.pocoo.org/snippets/62/ for an example. if not is_safe_url(next): return flask.abort(400) return flask.redirect(next or flask.url_for('index')) return flask.render_template('login.html', form=form)
경고 : 반드시 next매개 변수 값을 확인해야합니다 . 그렇지 않으면 응용 프로그램이 열린 리디렉션에 취약합니다. 구현 예는 이 Flask Snippet 을 is_safe_url참조하십시오 .
그렇게 간단합니다. 그런 다음 current_user모든 템플릿에서 사용할 수 있는 프록시 를 사용하여 로그인 한 사용자에게 액세스 할 수 있습니다 .
{% if current_user.is_authenticated %} Hi {{ current_user.name }}! {% endif %}
사용자가 로그인해야하는 뷰는 login_required데코레이터 로 장식 할 수 있습니다 .
@app.route("/settings") @login_required def settings(): pass
사용자가 로그 아웃 할 준비가되면 :
@app.route("/logout") @login_required def logout(): logout_user() return redirect(somewhere)
로그 아웃되고 세션에 대한 쿠키가 정리됩니다.
로그인 프로세스를 정의
기본적으로 사용자 login_required가 로그인하지 않고보기 에 액세스하려고하면 Flask-Login이 메시지를 깜박이고 로그인보기로 리디렉션합니다. (로그인보기가 설정되어 있지 않으면 401 오류와 함께 중단됩니다.)
로그인보기의 이름은로 설정할 수 있습니다 LoginManager.login_view. 예를 들면 다음과 같습니다.
login_manager.login_view = "users.login"
깜박이는 기본 메시지는 메시지 를 사용자 정의하려면 다음을 설정하십시오 .Please log in to access this page.LoginManager.login_message
login_manager.login_message = u"Bonvolu ensaluti por uzi tiun paĝon."
메시지 카테고리를 사용자 정의하려면 LoginManager.login_message_category다음을 설정하십시오 .
login_manager.login_message_category = "info"
로그인보기가 경로 재 지정 될 next때 사용자가 액세스하려고하는 페이지 인 조회 문자열에 변수가 있습니다. 경우 또는 USE_SESSION_FOR_NEXT이다 True페이지는 키 아래 세션에 저장됩니다 next.
프로세스를 추가로 사용자 정의하려면 LoginManager.unauthorized_handler다음을 사용 하여 함수를 장식하십시오 .
@login_manager.unauthorized_handler def unauthorized(): # do stuff return a_response
인증 헤더를 사용하여 로그인
주의
이 방법은 더 이상 사용되지 않습니다. request_loader 대신 아래를 사용하십시오 .
때로는 Authorization API 요청과 같은 헤더를 사용하여 기본 인증 로그인을 지원하려고 합니다. 헤더를 통한 로그인을 지원하려면 header_loader콜백 을 제공해야합니다 . 이 콜백은 user_loader사용자 ID 대신 헤더 값을 허용한다는 점을 제외하면 콜백 과 동일하게 작동해야합니다 . 예를 들면 다음과 같습니다.
@login_manager.header_loader def load_user_from_header(header_val): header_val = header_val.replace('Basic ', '', 1) try: header_val = base64.b64decode(header_val) except TypeError: pass return User.query.filter_by(api_key=header_val).first()
기본적으로 Authorization헤더 값은 header_loader콜백으로 전달됩니다 . AUTH_HEADER_NAME구성에 사용 된 헤더를 변경할 수 있습니다 .
요청 로더를 사용한 사용자 정의 로그인
때로는 헤더 값이나 쿼리 인수로 전달 된 API 키와 같은 쿠키를 사용하지 않고 사용자를 로그인하려고합니다. 이 경우 request_loader콜백을 사용해야합니다 . 이 콜백은 user_loaderuser_id 대신 플라스크 요청을 수락한다는 점을 제외하면 콜백 과 동일하게 작동해야합니다 .
예를 들어, Authorization헤더를 사용하여 URL 인수와 기본 인증 모두에서 로그인을 지원하려면 다음을 수행하십시오.
@login_manager.request_loader def load_user_from_request(request): # first, try to login using the api_key url arg api_key = request.args.get('api_key') if api_key: user = User.query.filter_by(api_key=api_key).first() if user: return user # next, try to login using Basic Auth api_key = request.headers.get('Authorization') if api_key: api_key = api_key.replace('Basic ', '', 1) try: api_key = base64.b64decode(api_key) except TypeError: pass user = User.query.filter_by(api_key=api_key).first() if user: return user # finally, return None if both methods did not login the user return None
익명 사용자
기본적으로 사용자가 실제로 로그인하지 않은 current_user경우 AnonymousUserMixin객체 로 설정됩니다 . 다음과 같은 속성과 방법이 있습니다.
익명 사용자에 대한 사용자 정의 요구 사항이있는 경우 (예 : 권한 필드가 필요함) 익명 사용자를 작성하는 호출 가능 (클래스 또는 팩토리 기능)을 제공 할 수 있습니다 LoginManager.
login_manager.anonymous_user = MyAnonymousUser
나를 기억
기본적으로 사용자가 브라우저를 닫으면 플라스크 세션이 삭제되고 사용자가 로그 아웃됩니다. "Remember Me"는 사용자가 브라우저를 닫을 때 실수로 로그 아웃되는 것을 방지합니다. 이것은 사용자가 로그 아웃 한 후 로그인 양식으로 사용자의 사용자 이름 또는 비밀번호를 기억하거나 미리 채우는 것을 의미 하지는 않습니다 .
“Remember Me”기능은 구현하기 까다로울 수 있습니다. 그러나, 플라스크 - 로그인은 거의 투명하게 - 그냥 통과 remember=True받는 login_user 전화. 쿠키는 사용자의 컴퓨터에 저장되며, Flask-Login은 해당 쿠키가 세션에없는 경우 해당 쿠키에서 자동으로 사용자 ID를 복원합니다. 쿠키가 만료되기까지의 시간은 REMEMBER_COOKIE_DURATION구성으로 설정하거나에 전달할 수 있습니다 login_user. 쿠키는 변조 방지 기능이므로 사용자가 쿠키를 변조 (예 : 다른 사람의 사용자 ID를 자신의 위치에 삽입)하는 경우 쿠키가 존재하지 않는 것처럼 쿠키가 거부됩니다.
이 수준의 기능은 자동으로 처리됩니다. 그러나 애플리케이션이 중요한 데이터를 처리하는 경우 추가 인프라를 제공하여 기억 쿠키의 보안을 강화할 수 있습니다.
대체 토큰
사용자 토큰을 기억 토큰의 값으로 사용한다는 것은 로그인 세션을 무효화하기 위해 사용자의 ID를 변경해야한다는 것을 의미합니다. 이를 개선하는 한 가지 방법은 사용자 ID 대신 다른 사용자 ID를 사용하는 것입니다. 예를 들면 다음과 같습니다.
@login_manager.user_loader def load_user(user_id): return User.query.filter_by(alternative_id=user_id).first()
그런 다음 get_idUser 클래스 의 메소드는 사용자의 기본 ID 대신 대체 ID를 반환합니다.
def get_id(self): return unicode(self.alternative_id)
이렇게하면 사용자가 비밀번호를 변경할 때 사용자의 대체 ID를 임의로 생성 된 새 값으로 자유롭게 변경할 수 있으므로 이전 인증 세션이 유효하지 않게됩니다. 대체 ID는 여전히 사용자를 고유하게 식별해야합니다. 두 번째 사용자 ID로 생각하십시오.
새로운 로그인
사용자가 로그인하면 해당 세션이 "새로 고침"으로 표시되어 실제로 해당 세션에서 인증되었음을 나타냅니다. 세션이 삭제되고 "기억하기"쿠키로 다시 로그인하면 "비 신규"로 표시됩니다. login_required신선도를 구분하지 않으므로 대부분의 페이지에 적합합니다. 그러나 개인 정보 변경과 같은 민감한 조치에는 새로 로그인해야합니다. (비밀번호 변경과 같은 작업은 항상 비밀번호를 다시 입력해야합니다.)
fresh_login_required, 사용자가 로그인했는지 확인하는 것 외에도 로그인이 최신인지 확인합니다. 그렇지 않은 경우 자격 증명을 다시 입력 할 수있는 페이지로 보냅니다. 당신은 사용자 정의 할 수와 같은 방법으로 동작을 사용자 정의 할 수 있습니다 login_required설정에 의해, LoginManager.refresh_view, needs_refresh_message, 그리고 needs_refresh_message_category:
login_manager.refresh_view = "accounts.reauthenticate" login_manager.needs_refresh_message = ( u"To protect your account, please reauthenticate to access this page." ) login_manager.needs_refresh_message_category = "info"
또는 새로 고침을 처리하기 위해 고유 한 콜백을 제공하여 :
@login_manager.needs_refresh_handler def refresh(): # do stuff return a_response
세션을 다시 최신으로 표시하려면 confirm_login함수를 호출하십시오 .
쿠키 설정
쿠키의 세부 사항은 응용 프로그램 설정에서 사용자 지정할 수 있습니다.
REMEMBER_COOKIE_NAME | "기억하기"정보를 저장할 쿠키의 이름입니다. 기본값 : remember_token |
REMEMBER_COOKIE_DURATION | 쿠키가 만료되기 전의 시간으로 datetime.timedelta개체 또는 정수 초입니다. 기본값 : 365 일 (도약 이외의 1 년) |
REMEMBER_COOKIE_DOMAIN | "Remember Me"쿠키가 도메인을 교차해야하는 경우 여기에 도메인 값을 설정하십시오 (예 :의 .example.com 모든 하위 도메인에서 쿠키를 사용하도록 허용 example.com). 기본: None |
REMEMBER_COOKIE_PATH | “Remember Me”쿠키를 특정 경로로 제한합니다. 기본: / |
REMEMBER_COOKIE_SECURE | "Remember Me"쿠키의 범위를 보안 채널 (일반적으로 HTTPS)로 제한합니다. 기본: None |
REMEMBER_COOKIE_HTTPONLY | 클라이언트 측 스크립트가 "Remember Me"쿠키에 액세스하지 못하게합니다. 기본: False |
REMEMBER_COOKIE_REFRESH_EACH_REQUEST | True쿠키로 설정하면 요청마다 새로 고쳐 지므로 수명이 단축됩니다. 플라스크처럼 작동합니다 SESSION_REFRESH_EACH_REQUEST. 기본: False |
세션 보호
위의 기능은 쿠키 도둑으로부터“Remember Me”토큰을 보호하는 데 도움이되지만 세션 쿠키는 여전히 취약합니다. Flask-Login에는 세션 보호 기능이있어 사용자의 세션 도난을 방지 할 수 있습니다.
LoginManager및 앱 구성에서 세션 보호를 구성 할 수 있습니다 . 활성화 된 경우 basic또는 strong 모드 에서 작동 할 수 있습니다 . 상의를 설정하려면 LoginManager, 설정된 session_protection속성을하는 "basic"나 "strong":
login_manager.session_protection = "strong"
또는 비활성화하려면 :
login_manager.session_protection = None
기본적으로 "basic"모드 에서 활성화 됩니다. 그것은 설정하여 응용 프로그램의 설정에서 비활성화 할 수 있습니다 SESSION_PROTECTION에 대한 설정을 None, "basic"또는 "strong".
세션 보호가 활성화되면 각 요청마다 사용자 컴퓨터의 식별자 (기본적으로 IP 주소 및 사용자 에이전트의 보안 해시)가 생성됩니다. 세션에 연관된 식별자가 없으면 생성 된 식별자가 저장됩니다. 식별자가 있고 생성 된 식별자와 일치하면 요청이 정상입니다.
식별자가 basic모드에서 일치하지 않거나 세션이 영구적 일 경우 세션은 단순히 새로 고침되지 않은 것으로 표시되며 새로 로그인해야하는 모든 것 때문에 사용자가 다시 인증해야합니다. (물론, 유효한 경우 새 로그인을 사용하고 있어야합니다.)
strong비 영구 세션의 모드 에서 식별자가 일치하지 않으면 전체 세션 (및 기억 토큰이있는 경우)이 삭제됩니다.
API에 대한 세션 쿠키를 사용하지 않도록 설정
API 인증시 Flask Session 쿠키 설정을 비활성화 할 수 있습니다. 이렇게하려면 요청에 설정 한 플래그에 따라 세션 저장을 건너 뛰는 사용자 정의 세션 인터페이스를 사용하십시오. 예를 들면 다음과 같습니다.
from flask import g from flask.sessions import SecureCookieSessionInterface from flask_login import user_loaded_from_header class CustomSessionInterface(SecureCookieSessionInterface): """Prevent creating session from API requests.""" def save_session(self, *args, **kwargs): if g.get('login_via_header'): return return super(CustomSessionInterface, self).save_session(*args, **kwargs) app.session_interface = CustomSessionInterface() @user_loaded_from_header.connect def user_loaded_from_header(self, user=None): g.login_via_header = True
이렇게하면 사용자가를 사용하여 인증 할 때마다 플라스크 세션 쿠키를 설정할 수 없습니다 header_loader.
현지화
기본적 으로 사용자가 로그인해야 할 때 메시지를 표시 하는 LoginManager데 사용 flash됩니다.이 메시지는 영어로되어 있습니다. 당신은 현지화를 필요로하는 경우, 설정 localize_callback의 속성 LoginManager들이 전송되기 전에 이러한 메시지 호출 할 수있는 기능을 flash예를 들어, gettext. 이 함수는 메시지와 함께 호출되고 flash대신 반환 값이 전송 됩니다.
API 문서
이 문서는 Flask-Login의 소스 코드에서 자동으로 생성됩니다.
로그인 설정하기
클래스 flask_login.LoginManager( app = None , add_context_processor = True )[출처]
이 개체의 로깅에 사용되는 설정을 누릅니다.의 인스턴스를 사용 LoginManager하는 하지 그것을 공장 기능의 앱에 바인드 다음 코드의 본체에서 하나를 만들 수 있도록, 특정 애플리케이션에 바인딩을합니다.
setup_app( app , add_context_processor = True )[출처]
이 메소드는 더 이상 사용되지 않습니다. LoginManager.init_app()대신 사용하십시오 .
unauthorized( )[출처]
사용자가 로그인해야 할 때 호출됩니다.에 콜백을 등록하면 호출됩니다 LoginManager.unauthorized_handler(). 그렇지 않으면 다음 조치를 수행합니다.
- LoginManager.login_message사용자에게 플래시 .
- 앱이 블루 프린트를 사용하는 경우을 사용하여 현재 블루 프린트의 로그인보기를 찾으십시오 blueprint_login_views. 앱이 블루 프린트를 사용하지 않거나 현재 블루 프린트에 대한 로그인보기가 지정되지 않은 경우의 값을 사용하십시오 login_view.
- 사용자를 로그인보기로 리디렉션하십시오. 액세스하려는 페이지는 next쿼리 문자열 변수 로 전달 되므로 홈페이지 대신 존재하는 경우 리디렉션 할 수 있습니다. 또는 nextUSE_SESSION_FOR_NEXT가 설정된 것처럼 세션에 추가됩니다 .
LoginManager.login_view정의되지 않은 경우 HTTP 401 (무단) 오류가 대신 발생합니다.
이것은 뷰 또는 before / after_request 함수에서 리턴되어야하며, 그렇지 않으면 경로 재 지정이 적용되지 않습니다.
needs_refresh( )[출처]
사용자가 로그인 할 때 호출되지만 세션이 오래되었으므로 다시 인증해야합니다. 에 콜백을 등록하면 호출됩니다 needs_refresh_handler. 그렇지 않으면 다음 조치를 수행합니다.
- LoginManager.needs_refresh_message사용자에게 플래시 .
- 사용자를로 리디렉션하십시오 LoginManager.refresh_view. 액세스하려는 페이지는 next 쿼리 문자열 변수 로 전달 되므로 홈페이지 대신 존재하는 경우 리디렉션 할 수 있습니다.
LoginManager.refresh_view정의되지 않은 경우 HTTP 401 (무단) 오류가 대신 발생합니다.
이것은 뷰 또는 before / after_request 함수에서 리턴되어야하며, 그렇지 않으면 경로 재 지정이 적용되지 않습니다.
일반 구성
user_loader( 콜백 )[출처]
세션에서 사용자를 다시로드하기위한 콜백을 설정합니다. 설정 한 함수는 사용자 ID (a unicode)를 가져 와서 사용자 개체를 반환하거나 None사용자가 존재하지 않는 경우 반환해야 합니다.
매개 변수 :
콜백 ( callable ) – 사용자 객체를 검색하기위한 콜백입니다. |
header_loader( 콜백 )[출처]
이 기능은 더 이상 사용되지 않습니다. LoginManager.request_loader()대신 사용하십시오 .
헤더 값에서 사용자를로드하기위한 콜백을 설정합니다. 설정 한 함수는 인증 토큰을 가져 와서 사용자 개체를 반환하거나 None사용자가없는 경우 반환해야 합니다.
매개 변수 :
콜백 ( callable ) – 사용자 객체를 검색하기위한 콜백입니다. |
anonymous_user
익명 사용자를 생성하는 클래스 또는 팩토리 함수로, 아무도 로그인하지 않은 경우에 사용됩니다.
unauthorized 구성
login_view
사용자가 로그인해야 할 때 리디렉션 할보기의 이름입니다. (인증 기관이 응용 프로그램 외부에있는 경우에도 절대 URL 일 수 있습니다.)
login_message
사용자가 로그인 페이지로 리디렉션 될 때 깜박이는 메시지입니다.
unauthorized_handler( 콜백 )[출처]
이것에 의해 unauthorized메소드 가 사용하는 콜백이 설정 됩니다 login_required. 인수를 취하지 않으며 일반보기 대신 사용자에게 보낼 응답을 리턴해야합니다.
매개 변수 :
콜백 ( callable ) – 인증되지 않은 사용자의 콜백입니다. |
refresh_view
사용자를 다시 인증해야 할 때 리디렉션 할보기의 이름입니다.
needs_refresh_message
사용자가 재 인증 페이지로 리디렉션 될 때 깜박이는 메시지입니다.
needs_refresh_handler( 콜백 )[출처]
이것에 의해 needs_refresh메소드 가 사용하는 콜백이 설정 됩니다 fresh_login_required. 인수를 취하지 않으며 일반보기 대신 사용자에게 보낼 응답을 리턴해야합니다.
매개 변수 :
콜백 ( callable ) – 인증되지 않은 사용자의 콜백입니다. |
로그인 메커니즘
flask_login.current_user
현재 사용자의 프록시
flask_login.login_fresh( )[출처]
True현재 로그인이 최신인지를 반환 합니다.
flask_login.login_user( user , remember = False , duration = None , force = False , fresh = True )[출처]
사용자를 로그인합니다. 실제 사용자 개체를 여기에 전달해야합니다. 사용자 is_active속성이 False인 경우 forceis가 아닌 한 로그인하지 않습니다 True.
이것은 True로그인 시도가 성공 False하고 실패한 경우 (즉, 사용자가 비활성화되어 있기 때문에) 리턴 합니다 .
매개 변수 :
|
flask_login.logout_user( )[출처]
사용자를 로그 아웃합니다. (실제 사용자를 전달할 필요는 없습니다.) 또한 Remember me 쿠키가있는 경우이를 정리합니다.
flask_login.confirm_login( )[출처]
현재 세션을 최신으로 설정합니다. 쿠키에서 세션을 다시로드하면 세션이 오래됩니다.
뷰 보호
flask_login.login_required( 펑크 )[출처]
이를 사용하여보기를 장식하면 실제보기를 호출하기 전에 현재 사용자가 로그인 및 인증되었는지 확인합니다. 그렇지 않은 경우 LoginManager.unauthorized콜백을 호출합니다 . 예를 들면 다음과 같습니다.
@app.route('/post') @login_required def post(): pass
사용자가 로그인해야하는 특정 시간 만 필요한 경우 다음을 수행하면됩니다.
if not current_user.is_authenticated: return current_app.login_manager.unauthorized()
...이 함수는 뷰에 추가하는 코드입니다.
단위 테스트시 인증을 전체적으로 끄는 것이 편리 할 수 있습니다. 이를 활성화하기 위해 애플리케이션 구성 변수 LOGIN_DISABLED 가로 설정된 True경우이 데코레이터는 무시됩니다.
노트
당 CORS에 대한 W3 지침 요청을 프리 플라이트 , HTTP를 OPTIONS요청 로그인 검사에서 제외됩니다.
매개 변수 :
func ( function ) – 장식 할 뷰 함수입니다. |
flask_login.fresh_login_required( 펑크 )[출처]
이를 사용하여보기를 장식하면 현재 사용자의 로그인이 최신 상태인지 확인합니다. 즉, 세션이 '기억하기'쿠키에서 복원되지 않았습니다. 쿠키 도둑의 노력을 방해하기 위해 비밀번호 나 이메일 변경과 같은 민감한 작업을 보호해야합니다.
사용자가 인증되지 않은 경우 LoginManager.unauthorized()정상으로 호출됩니다. 인증되었지만 세션이 최신 상태가 아닌 경우 LoginManager.needs_refresh()대신 호출 됩니다. (이 경우을 제공해야합니다 LoginManager.refresh_view.)
구성 login_required()변수와 관련 하여 데코레이터와 동일하게 작동합니다 .
노트
당 CORS에 대한 W3 지침 요청을 프리 플라이트 , HTTP를 OPTIONS요청 로그인 검사에서 제외됩니다.
매개 변수 :
func ( function ) – 장식 할 뷰 함수입니다. |
사용자 개체 도우미
수업 flask_login.UserMixin[출처]
이것은 Flask-Login이 사용자 객체가 가질 것으로 기대하는 메소드에 대한 기본 구현을 제공합니다.
수업 flask_login.AnonymousUserMixin[출처]
익명 사용자를 나타내는 기본 개체입니다.
유틸리티
flask_login.login_url( login_view , next_url = 없음 , next_field = 'next' )[출처]
로그인 페이지로 리디렉션하기위한 URL을 만듭니다. login_view제공되는 경우 URL 만 반환합니다. next_url그러나 제공되는 경우 next=URL로그인보기가 해당 URL로 다시 리디렉션 될 수 있도록 쿼리 문자열에 매개 변수 가 추가 됩니다. Flask-Login의 기본 무단 핸들러는 로그인 URL로 리디렉션 할 때이 기능을 사용합니다. 사용 된 호스트 이름을 강제하려면 호스트로 설정하십시오 FORCE_HOST_FOR_REDIRECTS. 요청 헤더 Host 또는 X-Forwarded-For가있는 경우 외부 사이트로 리디렉션되지 않습니다.
매개 변수 :
신호
코드에서 이러한 신호를 사용하는 방법에 대한 정보 는 신호에 대한 Flask 설명서를 참조하십시오 .
flask_login.user_logged_in
사용자가 로그인하면 전송됩니다. 발신자 인 앱 외에도 앱이 전달됩니다 user(이는 로그인 한 사용자 임).
flask_login.user_logged_out
사용자가 로그 아웃 할 때 전송됩니다. 발신자 인 앱 외에도 앱이 전달 user되어 로그 아웃중인 사용자입니다.
flask_login.user_login_confirmed
사용자의 로그인이 확인되면 새 것으로 표시됩니다. (일반 로그인을 위해 호출되지는 않습니다.) 앱 외에 추가 인수를받지 않습니다.
flask_login.user_unauthorized
에서 unauthorized메소드가 호출 될 때 전송됩니다 LoginManager. 앱 외에 추가 인수를받지 않습니다.
flask_login.user_needs_refresh
에서 needs_refresh메소드가 호출 될 때 전송됩니다 LoginManager. 앱 외에 추가 인수를받지 않습니다.
flask_login.session_protected
세션 보호가 적용될 때마다 전송되며 세션이 새로 고침되지 않거나 삭제 된 것으로 표시됩니다. 앱 외에 추가 인수를받지 않습니다.
':: IT > flask' 카테고리의 다른 글
스펙 : nginx, uwsgi, 프레임워크 및 라이브러리 : sqlarchemy/ 동적컨텐츠VS정적 컨텐츠 (0) | 2020.08.11 |
---|---|
[flask] jinja2 {% include %} 활용 (0) | 2020.07.23 |
[flack] aws : CURRENT_USER/HTTP 요청 전후에 호출되는 데코레이터/ is_authenticated 소개 및 예시/render_template 사용법 (0) | 2020.07.22 |
[flask] 내부 링크 만들기 -url_for() (0) | 2020.07.22 |