flasklogin_currentuser - choisungwook/portfolio GitHub Wiki

개요

  • 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)
⚠️ **GitHub.com Fallback** ⚠️