Flask使用Basic Auth 认证并解决注销问题

需求很简单,因为准备写一个内部使用的服务,对安全要求不高,但还有用户分权的需求,本着省事的原则,认证准备使用 Basic Auth 这种最基本的认证。

但 Basic Auth 有着严重的缺陷,那就是不能注销,这对于普通用户当然是没有什么影响,但是对于像我这样管理员来说就是很大问题。所以本文就着手解决注销登出的问题,关于协议本身就不介绍了。

 

Flask使用 Basic Auth

使用很简单,下面直接贴上官方文档中的示例,详细说明详见官方文档:

 

解决注销问题

注销这个问题困扰我了很久,偶然间看到一个博客给了我一个思路,只要指定一个用户为非登录帐户,需要注销的时候登录这个帐户不就可以了吗?按照这个思路解决了这个问题。

正经八本的登录方式是什么样的?形式和平常用 openssh 客户端很像,假设使用 admin 帐户,使用口令 password 访问一个网站的根目录,访问 URL http://admin:password@127.0.0.1:5000/ 即可。在页面上加个超链接即可。

接下来,就是解决 Flask 识别未登录帐户,本来是打算写一个函数,检测帐户为注销帐户时就返回 401。当然这个方法不够好,看 flask_httpauth.py 的代码后,发现要解决这个问题很简单,先展示一下相关代码:

 

以上代码只改了第22行,自元组里加上了 logout 这个字符串。这样监测到没有登录或者登录名为 logout 就会提示登录。

接下来把 flask_httpauth.py 拷贝到自己代码附近,改个名就能愉快的使用了。

下面附上全部代码:

 

flask_httpauth_kai.py

 

main.py:

 


吉ICP备17001717号-1 |© Copyright 2016-2022,Luya Tsai