일반적으로 모두 비슷하지만 일부는 다른 것보다 많은 기능을 가지고 있습니다. 예를 들어, Flask-Security는 암호화와 같은 추가 보안 기능이 많아 매우 무겁습니다. 사실 Flask-Security는 Flask-Principal을 하위 집합으로 포함합니다. Flask-Principal은 단 하나의 옵션 일지라도 인증을 위해 Flask-Login을 사용할 수 있습니다. 그래서 당신은 그것들이 모두 관련되어 있음을 볼 수 있습니다. 그러나 어떤 것은 서로의 부분 집합이나 수퍼 세트입니다.
특정 사례에서 이미 우수한 Flask-Login을 사용하고 있습니다. Flask-Login이 지원하지 않는 사용자 역할을 추가해야하는 경우 사용자 모델을 확장하여 역할 열을 추가 한 다음 login_required 데코레이터를 덮어 쓰는 것이 좋습니다. Flask-Security 등의 확장 프로그램을 사용하려고하면 상황에 따라 과용 될 수 있습니다.
예를 들어, 역할 필드를 사용하여 User 클래스를 확장합니다. "ANY", "ADMIN"등의 값을 가질 수 있습니다. 어떤 수단도 중요하지 않습니다.
class User(UserMixin):
def get_role():
return rolename
나는 다음과 login_required 장식 덮어 쓰게됩니다 :
def login_required(role="ANY"):
def wrapper(fn):
@wraps(fn)
def decorated_view(*args, **kwargs):
if not current_user.is_authenticated():
return current_app.login_manager.unauthorized()
urole = current_user.get_role()
if ((urole != role) and (role != "ANY")):
logout_user()
return current_app.login_manager.unauthorized()
return fn(*args, **kwargs)
return decorated_view
return wrapper
을