二手产品经理

二手产品经理

THIS IS RENO

replit auth - 87天 - 在线学python100天

记录#

  1. 今天学习的知识点是使用 replit 的登录验证功能。
  2. 这个功能点还有点不是很搞懂,应该在是代码运行的状态下 enable page ,才能正常运行,也就是代码要先 start 才可以。
  3. 开启之后,获取几个不同的用户信息。比如 X-Replit-User-Name 是用户名,还有用户 Id、组之类。
  4. 本次的练习是在 87 天的基础上,增加用户的登录验证功能。用了 2 个验证是不是有点没必要啊!

CODE#

main.py#


from flask import Flask, request, redirect, session
from replit import db
import os
from datetime import datetime

app = Flask(__name__)
app.secret_key = os.environ['sission_key']


@app.route('/', methods=['GET'])
def index():
    #db['user'] = {'name': 'reno', 'pass': '123'}
    uname = request.headers['X-Replit-User-Name']
    if uname != "Dengle":
        return redirect('/log')
    if session.get('name'):
        text1 = ""
        f = open("index.html", "r")
        page = f.read()
        f.close()
        for key in db.keys():
            if key and key != "user":
                name = db[key]
                text = f"""
                </hr>
                <h2>{name["title"]}</h2>
                <p>{key}</p>
                <p>{name["text"]}</p>
                """
                text1 += text
        page = page.replace("{text}", text1)
        return page
    else:
        return redirect('/log')


@app.route('/', methods=["POST"])
def submit():
    text = request.form
    ttime = datetime.now()
    title = text["title"]
    text = text["text"]
    db[ttime] = {"title": title, "text": text}
    return redirect('/')


@app.route('/log1')
def log1():
    return f"page{session.get('name')}"


@app.route('/log')
def log():
    f = open("login.html", "r")
    page = f.read()
    f.close()

    return page


@app.route('/login', methods=["POST"])
def login():
    user = request.form
    vuser = db['user']
    if vuser['name'] == user["name"] and vuser['pass'] == user["pass"]:
        session["name"] = vuser['name']
        print("--")
        print(session.get('name'))
        print("--")
        return redirect("/")
    else:
        return "NAME OR PASS ERROR!"


app.run(host='0.0.0.0', port=81)

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。