Flask登录实现

1.生成token

1.需要安装jwt

pip install pyjwt

2.封装token生成方法

import time
import jwt  # pip install pyjwt
from flask import current_app
class JwtTool():
    '''
    jwt管理
    '''
    def create(self,payload,ex=3600):
        '''
        生成jwt
        :param payload: 载荷
        :return: string jwt
        '''
        payload["exp"] = int(time.time())+ ex # 默认有效期1小时
        secret_key = current_app.config.get("SECRET_KEY")
        token = jwt.encode(payload,secret_key,algorithm="HS256")
        return token
    def valid(self,token):
        '''
        校验jwt
        :param token: JWT
        :return: 返回payload
        '''
        secret_key = current_app.config.get("SECRET_KEY")
        try:
            payload = jwt.decode(token, secret_key, algorithms="HS256")
            return payload
        except Exception as e:
            print(e)
            return False

settings/secretconfig.py

class SecretConfig():
    RL_ACC_ID = "8a216da88185a9c001818a7781bc0148"
    RL_ACC_TOKEN = "c98c0ae0fbc54e4da1a070db3050e529"
    RL_APP_ID = "8a216da88185a9c001818a7782bf014f"
    RL_TID = "1"
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT =6379

其中SECRET_KEY是中配置项内获取需要写入配置项
SecretConfig是继承与短信验证码所需配置
settings/secret.py

from settings.secret import SecretConfig

class DefaultConfig(SecretConfig):
    SECRET_KEY = "asdaweq"
    SQLALCHEMY_DATABASE_URI=""
    SQLALCHEMY_TRACK_MODIFICATIONS=False
    SQLALCHEMY_ECHO=True
    JSON_AS_ASCII=False
    SMS_TIME = 5

class DevConfig(DefaultConfig):
    SQLALCHEMY_DATABASE_URI="mysql+pymysql://root:password@127.0.0.1:3306/h2111anews"

2.发送短信验证码

import time
import jwt  # pip install pyjwt
from flask import current_app
class JwtTool():
    '''
    jwt管理
    '''
    def create(self,payload,ex=3600):
        '''
        生成jwt
        :param payload: 载荷
        :return: string jwt
        '''
        payload["exp"] = int(time.time())+ ex # 默认有效期1小时
        secret_key = current_app.config.get("SECRET_KEY")
        token = jwt.encode(payload,secret_key,algorithm="HS256")
        return token
    def valid(self,token):
        '''
        校验jwt
        :param token: JWT
        :return: 返回payload
        '''
        secret_key = current_app.config.get("SECRET_KEY")
        try:
            payload = jwt.decode(token, secret_key, algorithms="HS256")
            return payload
        except Exception as e:
            print(e)
            return False

使用发送短信导入此类调用即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Flask实现登录功能,需要以下几个步骤: 1. 安装FlaskFlask-Login ```bash pip install Flask pip install Flask-Login ``` 2. 在Flask应用程序中初始化Flask-Login ```python from flask import Flask from flask_login import LoginManager app = Flask(__name__) login_manager = LoginManager(app) ``` 3. 创建用户模型 ```python from flask_login import UserMixin class User(UserMixin): def __init__(self, id, username, password): self.id = id self.username = username self.password = password def get_id(self): return str(self.id) ``` 4. 实现用户认证函数 ```python from werkzeug.security import check_password_hash # 假设user_list是一个包含所有用户的列表 def authenticate(username, password): for user in user_list: if user.username == username and check_password_hash(user.password, password): return user return None ``` 5. 实现登录视图函数 ```python from flask import render_template, request, redirect, url_for from flask_login import login_user, logout_user, login_required @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = authenticate(username, password) if user: login_user(user) return redirect(url_for('index')) return render_template('login.html') ``` 6. 实现登出视图函数 ```python @app.route('/logout') @login_required def logout(): logout_user() return redirect(url_for('index')) ``` 7. 使用@login_required装饰器保护需要登录才能访问的页面 ```python @app.route('/profile') @login_required def profile(): return render_template('profile.html') ``` 以上是一个基本的Flask登录功能的实现步骤,具体实现可能会有所不同,但是大致流程是相似的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值