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** โš ๏ธ