前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flask 实现 Session 会话认证和 Token 认证

Flask 实现 Session 会话认证和 Token 认证

原创
作者头像
Lorin 洛林
发布于 2025-01-18 13:56:59
发布于 2025-01-18 13:56:59
22900
代码可运行
举报
运行总次数:0
代码可运行

前言

  • 在前后端交互中,用户鉴权可以通过多种方式实现,其中最常见的是基于 Session 的会话认证和基于 Token 的认证(如使用 flask_jwt_extended 实现 JWT)。本文将简要介绍这两种方法的实现方式并提供对应的代码示例。

基于 Session 会话认证

原理

  • Session 是一种基于服务器存储的认证机制。
  • 用户登录成功后,服务器为其生成一个唯一的 session_id,并将其存储在客户端的 Cookie 中。
  • 每次请求,服务器通过验证 session_id 来判断用户的身份。

实现步骤

  1. 用户通过登录接口提交凭据。
  2. 服务器验证凭据后,创建 Session 并将其存储在服务端(如内存或 Redis 中)。
  3. 客户端在请求中携带 Cookie(包含 session_id),服务器验证后允许访问受保护资源。

适用场景

  • 一般用于 Web 应用中。

示例代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from flask import Flask, session, redirect, url_for, request, jsonify

app = Flask(__name__)
app.secret_key = 'your_secret_key'

# 模拟用户数据
USER_DATA = {"test_user": "password123"}


# 登录接口
@app.route('/login', methods=['POST'])
def login():
    data = request.json
    username = data.get('username')
    password = data.get('password')

    if username in USER_DATA and USER_DATA[username] == password:
        session['username'] = username  # 创建会话
        return jsonify({"message": "Login successful"}), 200
    return jsonify({"message": "Invalid credentials"}), 401


# 受保护资源
@app.route('/protected', methods=['GET'])
def protected():
    if 'username' in session:
        username = session['username']
        return jsonify({"message": f"Welcome {session['username']}!"}), 200
    return jsonify({"message": "Unauthorized"}), 401


# 登出接口
@app.route('/logout', methods=['POST'])
def logout():
    session.pop('username', None)  # 清除会话
    return jsonify({"message": "Logout successful"}), 200


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

基于 Token 会话认证

原理

  • Token认证 是一种基于客户端的认证机制,通常使用 JSON Web Token (JWT)。
  • 用户登录后,服务器生成一个 Token 返回给客户端。
  • 客户端在后续请求中携带该 Token(如放入请求头),服务器验证后允许访问受保护资源。

实现步骤

  • 用户通过登录接口提交凭据。
  • 服务器验证凭据后,生成 JWT 并返回给客户端。
  • 客户端携带 JWT(通常在 Authorization 头中)访问受保护资源。
  • 服务器通过解析和验证 JWT 确定用户身份。

适用场景

  • 适合跨平台或移动端场景(如前后端分离的应用)。

示例代码

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from flask import Flask, jsonify, request
from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity

app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'your_jwt_secret_key'

jwt = JWTManager(app)

# 模拟用户数据
USER_DATA = {"test_user": "password123"}


# 登录接口
@app.route('/login', methods=['POST'])
def login():
    data = request.json
    username = data.get('username')
    password = data.get('password')

    if username in USER_DATA and USER_DATA[username] == password:
        access_token = create_access_token(identity=username)  # 创建 JWT
        return jsonify(access_token=access_token), 200
    return jsonify({"message": "Invalid credentials"}), 401


# 受保护资源
@app.route('/protected', methods=['GET'])
@jwt_required()  # 验证 JWT
def protected():
    current_user = get_jwt_identity()
    return jsonify({"message": f"Welcome {current_user}!"}), 200


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

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
谷歌2023年裁员超12000人,遣散费支出高达21亿美元!
1月31日消息,根据谷歌(Google)母公司Alphabet于30日公布的2023年第四季度及全年财报显示,谷歌在2023年裁员了超过12,000名员工,遣散费及相关费用支出高达21亿美元,而且随着裁员的继续,相关支出仍在不停追加。
芯智讯
2024/02/06
1300
谷歌2023年裁员超12000人,遣散费支出高达21亿美元!
微软杀疯了!接入ChatGPT后首次交卷,一季度营收528亿美元
---- 新智元报道   编辑:桃子 【新智元导读】ChatGPT的经济效益有多大?微软最新财报给出了答案。 ChatGPT的这波红利,微软是赚到了。 当地时间25日,微软公布了2023年第一季度财报,营收528亿美元。 财报发布后,微软盘后价,大涨9%。 收盘后,微软市值为2.05万亿美元,成为全球市值第三高的公司。 微软亮眼成绩单 接入ChatGPT后,微软如何逆袭成功的。 总体看,微软财报显示,关键指标全都超出市场预期。 本季度营收为529亿美元,同比增长7%;净利润为183亿美元,
新智元
2023/05/09
3940
微软杀疯了!接入ChatGPT后首次交卷,一季度营收528亿美元
亚马逊10000人大裁员今启动!谷歌绩效强制打低分跟风「毕业潮」
本周二,亚马逊史上最大规模的「裁员序曲」已经拉开帷幕,具体的裁员数字目前还在不断攀升中。
新智元
2023/01/07
4140
亚马逊10000人大裁员今启动!谷歌绩效强制打低分跟风「毕业潮」
GitHub/GitLab同天宣布裁员,最高比例10%!GitHub所有办公室不再续租
明敏 发自 凹非寺 量子位 | 公众号 QbitAI 一天之内,原本是老对手的GitHub、GitLab,双双宣布裁员计划。 比例分别是10%和7%。 预计将有300人离开GitHub,100人告别GitLab。 裁员原因十分一致:调整预算。 GitHub还宣布,所有办公室都不续租、全员远程办公,继续冻结招聘。 GitLab则透露了详细的裁员补偿,包括4个月的工资、加快股权归属、延长医保等。 消息传出,GitLab股价大跌14%。 网友们也对此发出担忧: 这会让员工丧失对公司的信任,如果你裁掉了10%的
量子位
2023/02/23
2740
GitHub/GitLab同天宣布裁员,最高比例10%!GitHub所有办公室不再续租
Alphabet 股东呼吁谷歌“砍掉”数千人,称支付给员工的薪水过高
当地时间 11 月 17 日,维权投资者 TCI 基金管理公司呼吁 Alphabet 裁员数千人,并减少长期投资支出。这家公司还表示,谷歌母公司支付给员工的薪酬过高。
深度学习与Python
2022/11/28
1890
搞大模型巨亏,微软都还没挣到钱!GitHub Copilot每月收10刀,倒赔20
他们那用户量高达150万的AI编程工具GitHub Copilot,平均每个月在每个用户身上都要倒贴20美元,最高能达80美元。
量子位
2023/10/17
3840
搞大模型巨亏,微软都还没挣到钱!GitHub Copilot每月收10刀,倒赔20
阿里辟谣海外建全球总部;科技巨头加速裁员,商学教授直呼企业管理层愚蠢;谷歌Fuchsia OS部门遭遇重大打击 | Q资讯
整理 | Tina IBM 宣布裁员,同时公司营收创 11 年以来最大增幅;2023 全球科技行业已宣布裁员近 6 万,过去一周增加一倍多,商学院教授直呼裁员愚蠢;兔年春节迎旅游热潮,携程数据表明旅游业恢复到疫情前水平;阿里辟谣海外建全球总部:搬到新加坡纯属谣言;法拉第未来 FF 91 正进行最后调试工作,未来将重点聚焦国内市场;微软裁员遣散费高达 8 亿美元,平均每人获赔 54 万元;百度开源项目 bRPC 升级为 Apache 顶级项目;取代安卓没戏了,谷歌 Fuchsia OS 部门遭遇裁员重大打
深度学习与Python
2023/03/29
3720
阿里辟谣海外建全球总部;科技巨头加速裁员,商学教授直呼企业管理层愚蠢;谷歌Fuchsia OS部门遭遇重大打击 | Q资讯
亚马逊Q4利润下滑98%/ 盖茨:ChatGPT意义不亚于互联网诞生/ ICLR 2023放榜… 今日更多新鲜事在此
日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大家好,今天是2月3日,星期五。 喜欢下班的打工人们,今天可以喜提本周第七次(也是最后一次)下班了! 来跟日报君看看科技圈的今日大事吧。 ICLR 2023放榜,整体接收率为31.8% 据统计,DL顶会ICLR 2023共接收近5000篇投稿,整体接收率为31.8%,接近去年的32.26%。 官网显示,Notable-top-5%论文包含了Transformer、扩散模型等主题。 可从以下地址查看https://openreview.net/gro
量子位
2023/02/23
2630
亚马逊Q4利润下滑98%/ 盖茨:ChatGPT意义不亚于互联网诞生/ ICLR 2023放榜… 今日更多新鲜事在此
裁员几百人、股价暴跌,MariaDB要凉凉?
作者 | 李冬梅 近日,MariaDB 被曝出已经裁员 8% 并对其中期财务可行性的“持续经营”发出了警告。 MariaDB 是一家欧洲公司,其开发维护的 MariaDB 数据库 是最受欢迎的开源数据库之一。总部位于芬兰赫尔辛基,在瑞典和美国设有办事处,拥有大约 1200 万名全球数据库用户。包括 booking.com、惠普、维珍移动、维基百科等。 MariaDB 数据库是 MySQL 的一个分支,它由 MySQL 的主要作者 Michael Widenius 开发。MySQL 被甲骨文收购后,MySQ
深度学习与Python
2023/04/30
3540
裁员几百人、股价暴跌,MariaDB要凉凉?
陌陌赚大钱了,未来如何赚更多钱?
陌陌今天发布了Q1财报,数据很漂亮:Q1净营收达到2630万美元,同比大幅增长了383%;净利润为670万美元,去年同期净亏损为120万美元,这是其创立近四年以来首次实现盈利,对于陌陌来说应该算是规模盈利。不论是营收还是盈利都超过了陌陌此前的展望和分析师的预期,陌陌股价盘前大涨24%。陌陌的钱如何赚的,未来会如何赚更多钱? 一、收入结构与腾讯颇为相似 不少中概股都有过扭亏为盈后又持续亏损的经历,比如京东在上市前实现了8000万元盈利,很大程度是因为利息收入和政府补贴,此后一直亏损。排除利息等投资收益,陌陌
罗超频道
2018/04/28
6080
谷歌云推动公司盈利但仍爆亏,微软云业务增速放缓
作者 | 褚杏娟 对于科技企业来说,今年是艰难的一年。 当地时间 7 月 26 日,谷歌母公司 Alphabet 公布第二季度财报,营收 696.85 亿美元,同比增长 13%。值得注意的是,与 2020 年相比,2021 年第二季度同比增长 62%。相比之下,今年 13% 的增长显得微不足道,甚至创下了 2020 年末以来最低同比增速。尽管如此,谷歌美股盘后不降反升,一度涨超 5% 后收窄至 2%。 Alphabet 和⾕歌首席执行官 Sundar Pichai 表⽰,搜索和云业务再次推动了公司的盈利。根
深度学习与Python
2023/03/29
3750
谷歌云推动公司盈利但仍爆亏,微软云业务增速放缓
免费ChatPPT来了/ 首例数字人侵权案判了/ 微软总裁炮轰英国...今日更多新鲜事在此
日报君 发自 凹非寺 量子位 | 公众号 QbitAI 大家好,今天是4月28日星期五,终于,终于到了这一天。 还是照例送上科技圈新鲜事与最新AI工具推荐。 首例涉虚拟数字人侵权案 杭州互联网法院公众号披露了首例涉虚拟数字人侵权案判决结果。 由魔珐公司发布的虚拟数字人Ada视频,被杭州某网络公司替换标识后添加了虚拟数字人课程的营销信息,发布在抖音。 一审判决认定杭州某网络公司构成著作权侵权及不正当竞争,判决其赔偿12万元。 △被诉侵权视频截图 AI在科技巨头财报电话会上出现近50次 这个财报季,AI一词
量子位
2023/05/06
1880
免费ChatPPT来了/ 首例数字人侵权案判了/ 微软总裁炮轰英国...今日更多新鲜事在此
烧钱明星Deepmind终于赚钱了,首次盈利5960万美元!
---- 新智元报道 来源:网络 编辑:霜叶、David 【新智元导读】从成立以来一直在亏钱的DeepMind终于逆袭!最新数据显示,2020年,DeepMind史上首次盈利,实现利润
新智元
2021/10/12
6150
谷歌年关裁员1.2万人,暂停新员工绿卡申请!加州第一个法定春节假日,打工人年难过
梦晨 Pine 发自 凹非寺 量子位 | 公众号 QbitAI 很突然,微软亚马逊之后,谷歌刚刚也宣布了万人大裁员计划! 此轮轮裁员约占总人数6%,具体波及12000人左右。 谷歌CEO劈柴哥早上6点给被裁员工发邮件公布这一“艰难的决定”,同时全文内容也在谷歌博客上公开。 在邮件中,他将裁员归咎于经济形势: 过去两年中,我们经历了快速增长的阶段。为了跟上和推动这种增长,我们当时为不同的经济环境招聘了人才,而现在我们面临的经济环境却不同了。 至此,几乎所有美国科技巨头都宣布了大裁员,只剩下苹果(此前也宣布
量子位
2023/02/28
5820
谷歌年关裁员1.2万人,暂停新员工绿卡申请!加州第一个法定春节假日,打工人年难过
挑战亚马逊微软云市场“一哥”地位,谷歌拟54亿美元收购网安公司Mandiant
当地时间3月8日,谷歌母公司Alphabet宣布计划以54亿美元收购网络安全公司Mandiant,如收购成功,Mandiant将加入谷歌的云计算部门,以更好地和亚马逊AWS和微软Azure在云市场开展竞争。
FB客服
2022/04/11
3350
挑战亚马逊微软云市场“一哥”地位,谷歌拟54亿美元收购网安公司Mandiant
英特尔遭遇「灾难级」财报!裁员、砍业务、董事会主席辞职,甚至给不出2023业绩预期
羿阁 鱼羊 发自 凹非寺 量子位 | 公众号 QbitAI 英特尔陷入悲惨世界。 2022年第四季度财报一出,全球芯片巨头英特尔“遇灾”实锤了: 第四季度营收一口气跌了1/3,不仅低于市场预期,还创下2017年以来季度收入新低。 连英特尔CEO帕特·基辛格都不得不承认: 英特尔的第四季度很艰难。 更为糟糕的是,“我们预计今年上半年仍会很困难”: 英特尔给出的第一季度营收预期,仅在105亿-115亿美元之间——直接回到了2010年的水平。 这波数据一公布,市场立马就给打上了“灾难级”标签。 《华尔街日报》直
量子位
2023/02/28
3950
英特尔遭遇「灾难级」财报!裁员、砍业务、董事会主席辞职,甚至给不出2023业绩预期
Twitter快没家了?拖欠租金、变卖家产,马斯克为了省钱用尽奇招
整理 | 凌敏 曾豪掷 440 亿美元收购 Twitter 的马斯克,现在竟然因为“抠门”上了头条? 据《纽约时报》报道,在马斯克以 440 亿美元收购 Twitter 后,为了削减成本,这家社交媒体公司已停止支付办公楼租金。 据悉,由于此前 Twitter 刚经历大规模裁员,员工数骤降,马斯克的团队一直在试图重新谈判办公室的租赁费率,但谈判进展并不顺利。因此,Twitter 已经数周未支付其全球办事处及旧金山总部的租金。 消息称,Twitter 已经收到了来自房地产公司的投诉,其中就包括拥有 Twi
深度学习与Python
2023/03/29
2990
Twitter快没家了?拖欠租金、变卖家产,马斯克为了省钱用尽奇招
1月20日,谷歌裁员一万两千人,硅谷裁员扩充十万人以上。
Alphabet首席执行官Sundar Pichai周五在一封电子邮件中表示:1月20日,谷歌母公司Alphabet Inc.宣布裁员约1.2万人,占其全球员工总数6%。
江湖评谈
2023/02/12
2310
谷歌宣布裁员12000人!英特尔继续裁员数百人!
1月21日消息,据彭博社报道,当地时间20日,谷歌(Google)母公司Alphabet 宣布,将裁员约1.2 万人,占全球总员工数逾6%,这也成为该公司史上最大规模的一轮裁员。
芯智讯
2023/02/09
3150
为何押注AI大模型的微软云,业绩增速反而不如谷歌云?
上周微软、谷歌、Meta等国外科技公司相继发布最新财报。作为与人工智能、云计算和数字广告等领域相关的巨头,它们的一举一动都将对市场产生影响,同时也吸引着众多从业者的关注。
科技云报道
2023/08/10
2820
为何押注AI大模型的微软云,业绩增速反而不如谷歌云?
推荐阅读
谷歌2023年裁员超12000人,遣散费支出高达21亿美元!
1300
微软杀疯了!接入ChatGPT后首次交卷,一季度营收528亿美元
3940
亚马逊10000人大裁员今启动!谷歌绩效强制打低分跟风「毕业潮」
4140
GitHub/GitLab同天宣布裁员,最高比例10%!GitHub所有办公室不再续租
2740
Alphabet 股东呼吁谷歌“砍掉”数千人,称支付给员工的薪水过高
1890
搞大模型巨亏,微软都还没挣到钱!GitHub Copilot每月收10刀,倒赔20
3840
阿里辟谣海外建全球总部;科技巨头加速裁员,商学教授直呼企业管理层愚蠢;谷歌Fuchsia OS部门遭遇重大打击 | Q资讯
3720
亚马逊Q4利润下滑98%/ 盖茨:ChatGPT意义不亚于互联网诞生/ ICLR 2023放榜… 今日更多新鲜事在此
2630
裁员几百人、股价暴跌,MariaDB要凉凉?
3540
陌陌赚大钱了,未来如何赚更多钱?
6080
谷歌云推动公司盈利但仍爆亏,微软云业务增速放缓
3750
免费ChatPPT来了/ 首例数字人侵权案判了/ 微软总裁炮轰英国...今日更多新鲜事在此
1880
烧钱明星Deepmind终于赚钱了,首次盈利5960万美元!
6150
谷歌年关裁员1.2万人,暂停新员工绿卡申请!加州第一个法定春节假日,打工人年难过
5820
挑战亚马逊微软云市场“一哥”地位,谷歌拟54亿美元收购网安公司Mandiant
3350
英特尔遭遇「灾难级」财报!裁员、砍业务、董事会主席辞职,甚至给不出2023业绩预期
3950
Twitter快没家了?拖欠租金、变卖家产,马斯克为了省钱用尽奇招
2990
1月20日,谷歌裁员一万两千人,硅谷裁员扩充十万人以上。
2310
谷歌宣布裁员12000人!英特尔继续裁员数百人!
3150
为何押注AI大模型的微软云,业绩增速反而不如谷歌云?
2820
相关推荐
谷歌2023年裁员超12000人,遣散费支出高达21亿美元!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验