Flask学习_08_flask中自带session实现登录、校验登录、退出登录小案例

flask中自带session实现登录、校验登录、退出登录小案例

# -*- coding: utf-8 -*-
from flask import Flask, abort, request, jsonify, session

app = Flask(__name__)
# 使用session会话需要一个密钥,这里随意设置
app.secret_key = "kfdsjfjfkdslfjksd"


@app.route("/")
def hello():
    return "hello"


# 登录
@app.route("/login", methods=["POST"])
def login():
    """
    帐号 username test
    密码 password test001
    :return:
    """

    username = request.json.get("username")
    password = request.json.get("password")
    if not all([username, password]):
        return jsonify(msg="参数不完整")
    if username == "test" and password == "test001":
        # 如果通过,保存登录状态在session中
        session["username"] = username
        return jsonify(msg="登录成功!")
    else:
        return jsonify(msg="帐号或者密码错误")


# 检查登录状态
@app.route("/check_session", methods=["GET"])
def check_session():
    username = session.get("username")
    print(session)
    if username is not None:
        return jsonify(username=username)
    else:
        return jsonify(msg="出错了,没登录")


# 退出
@app.route("/logout", methods=["GET"])
def logout():
    session.clear()
    return jsonify(msg="退出成功")


if __name__ == '__main__':
    app.run()

Flask Session储存在redis

from flask import Flask, session
from flask_session import RedisSessionInterface
from redis import Redis
from flask_session import Session
from datetime import timedelta
import os

app = Flask(__name__)
app.config['SESSION_TYPE'] = 'redis'  # session存储格式为redis
app.config['SESSION_REDIS'] = Redis(  # redis的服务器参数
    host='127.0.0.1',  # 服务器地址
    port=6379)  # 服务器端口

app.config['SESSION_USE_SIGNER'] = True  # 是否强制加盐,混淆session
app.config['SECRET_KEY'] = os.urandom(24)  # 如果加盐,那么必须设置的安全码,盐
app.config['SESSION_PERMANENT'] = False  # sessons是否长期有效,false,则关闭浏览器,session失效
app.config['PERMANENT_SESSION_LIFETIME'] = 3600  # session长期有效,则设定session生命周期,整数秒,默认大概不到3小时。
Session(app)


@app.route('/n1')
def n1():
    session["k2"] = "admina"
    return "n1"


@app.route('/n2')
def n2():
    print(session["k2"])
    return "n2"


if __name__ == '__main__':
    # app.__call__
    app.wsgi_app
    app.run(debug=True)
    # app.run()
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值