您的位置:首页 > 房产 > 建筑 > 石家庄专业做网站公司_湖南省绿色建筑信息平台_微信营销典型案例_温州网站建设

石家庄专业做网站公司_湖南省绿色建筑信息平台_微信营销典型案例_温州网站建设

2025/1/7 8:15:28 来源:https://blog.csdn.net/baidu_38766791/article/details/144923661  浏览:    关键词:石家庄专业做网站公司_湖南省绿色建筑信息平台_微信营销典型案例_温州网站建设
石家庄专业做网站公司_湖南省绿色建筑信息平台_微信营销典型案例_温州网站建设

本文主要讲述了基于flask实现了http的基础认证和摘要认证。

1. 基本认证机制

工作原理

  1. 客户端向服务器端发送网络请求时,没有携带任何认证信息

  2. 服务器接收到请求后检查请求头是否具有authorization的键值对

    1. 如果具有该键值对,则对收到的authorization的值,进行解密,获取对应的用户登录信息;根据用户登录信息,正常回复网页

    2. 如果不存在该键值对,则响应401状态码,并在响应头中设置www-authorization键值对

  3. 客户端接收到401状态码的响应后,输入用户登录凭证,此时请求头中会添加authorization键值对

加密算法

  1. 客户端将用户输入的用户名username和密码password,组合成新的字符串username:password

  2. 然后利用base64加密算法对username:password字符串加密,形成密文hashedstr

  3. 客户端将Basic字符串和hashedstr拼接,写入authorization请求头中

代码实现

from flask import Flask,make_response,request, redirect
import base64app = Flask(__name__)@app.route('/basic')
def basic():authorization = request.headers.get('authorization')  # 对http基本认证的实现, 密文的格式为: `用户名:密码`if not authorization:resp = make_response()resp.headers['www-authenticate'] = '''Basic realm= home'''return resp, 401else:print(authorization)bdecode = base64.b64decode(authorization.split(' ')[-1])name = bdecode.decode('utf-8').split(':')[0]  # 用户名m = hashlib.md5()m.update('123456'.encode('utf-8')) # 此处需要进行数据库用户密码的获取pwd = m.hexdigest()input_pwd = bdecode.decode('utf-8').split(':')[-1] # 用户输入的密码# 此处需要对比pwd和input_pwdreturn redirect('/digest')

基本认证的示例:

 WWW-Authenticate: Basic realm="Access to the staging site", charset="UTF-8"
 ​
 Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

前端的登录

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com