内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

用python web框架bottle开发网站(3)

2018-04-16 17:54 出处:清屏网 人气: 评论(0

上一节我们判断登录逻辑的处理方式是把用户名(username)和密码(password)直接硬编码到代码中,接下来,我们使用文本文档作为用户名和密码的保存方式,我们首先实现 明文 用户名和密码保存。注意: 在实际的用户系统中,我们绝对不能明文保存用户密码,这是对用户的不负责。

新建user.py文件,写登录逻辑处理函数

#user.py
import os

if not os.path.exists('./userinfo.txt'):
    open('./userinfo.txt', 'w', encoding = 'utf-8').close()
    
def read_user(username, password):
    userinfo = dict()
    with open('./userinfo.txt', 'r') as fob:
        for line in fob.readlines():
            uname = line.strip().split('=>')[0]
            try:
                pwd = line.strip().split('=>')[1]
                userinfo[uname] = pwd
            except:
                print('\033[1;31;40m  严重:用户信息文件格式错误,系统无法运行 \033[0m')
                exit(1)
    if username not in userinfo:
        return False
    if userinfo[username] == password:
        return True
    return False

总结一下read_user函数的功能就是根据传入的用户名和密码,判断是否和userinfo.txt中的账号密码匹配,如果正确返回True,反之。

在userinfo.txt使用 => 标识分割用户名和密码。

#main.py
from bottle import run,route,template,request
from user import read_user

@route("/login", method = 'get')
def index():
    return template('login')

@route('/login', method = 'post')
def index():
    username = request.forms.get('username')
    password = request.forms.get('password')
    if read_user(username, password):
        return '登录成功'
    return '账号密码错误'
    
run(host = 'localhost', port = 80, debug = True, reloader = True)

我们在main.py中导入user Module,然后修改判断逻辑 if username == 'admin' and password == 'root'if read_user(username, password)

先手动在userinfo.txt中写入一些测试的账号和密码

userinfo.txt

然后模拟登陆系统,

image.png

console中看提交的网络请求

image.png

当然,目前为止还是一个玩具,还有很多要完善的东西。

  • 前端传输用户信息加密
  • 后端加密保存用户密码
  • 更友好的用户登录界面
  • 螺丝帽验证码
  • 注册用户
  • 识别用户登录状态
  • 退出登录
  • 修改密码
  • ………………

接下来我们首先实现完善系统,实现注册,登录,状态保持,退出等功能。

分享给小伙伴们:
本文标签: bottlepython

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号