- 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)