- flask-login 패키지를 사용할 떄 로그인 한 사용자를 가져오는 방법
- 로그인 한 유저는 current_user로 가져올 수 있다.
- 오류를 막기 위해서 login_required 어노테이션을 함께 사용하는 것이 좋다.
- user에 대한 정보는 UserMixin을 상속해서 커스터마이징 할 수 있다.
from flask_login import LoginManager, current_user, login_required, UserMixin
from flask imoprt Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# login_manager 초기화
login_manager = LoginManager()
login_manager.init_app(app)
# SQLAlchemy 초기화
db = SQLAlchemy()
@app.route("/users")
@login_required
class Demo():
'''
demo Controller
'''
print(current_user)
print(current_user.email)
class User(UserMixin, db.Model):
__tablename__ = 'user'
# 스키마 정의
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(50), unique=True, nullable=False)
password = db.Column(db.String(20), nullable=False)
gitlab_userid = db.relationship('GitlabUser', backref='user', lazy=True)
user_project_id = db.relationship('UserGitlabMappingEntity', backref='user', lazy=True)
def __init__(self, email, password, confirm_password):
self.email = email
self.password = self.encrypt_password(password)
self.confirm_password = confirm_password
if not self.check_password(self.confirm_password):
log.debug('[*] 사용자가 입력한 패스워드가 불일치')
raise('[*] 사용자가 입력한 패스워드가 불일치')
def set_password(self, password):
'''
비밀번호 재설정
'''
self.password = self.encrypt_password(password)
def encrypt_password(self, password):
'''
비밀번호 암호화
'''
return generate_password_hash(password=password, method='sha256')
def check_password(self, password):
'''
비밀번호 확인
'''
return check_password_hash(self.password, password)
def __repr__(self):
return '<User {}>'.format(self.email)