【flask】登陆后返回之前重定向跳转的页面
登陆后返回之前重定向跳转的页面
一、前言
实现强制跳转到登陆页面,登陆后返回之前的页面的功能。网上跳登陆页面的很多;返回之前页面功能没多少。这里我只是用了自己的方法,有缺点和其他方法也请指点!(´ε`)
二、session
1、Session的概念
Session是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session。
2、flask操作session:
- 设置session:通过
flask.session
就可以操作session了。操作session
就跟操作字典是一样的。session['username']='zhiliao'
。 - 获取session:也是类似字典,
session.get(key)
。 - 删除session中的值:也是类似字典。可以有三种方式删除session中的值。
session.pop(key)
。del session[key]
。session.clear()
:删除session中所有的值。
- 设置session的有效期:如果没有设置session的有效期。那么默认就是浏览器关闭后过期。如果设置session.permanent=True,那么就会默认在31天后过期。如果不想在31天后过期,那么可以设置
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hour=2)
在两个小时后过期
三、设计思路
1、流程
V(访问) --> A(选择图片页面)
A --未登陆--> B(登陆页面)
B --登陆成功--> A
V(访问) --> A(登陆页面)
A --登陆成功--> B(主页)
2、程序
- @选择图片的路由`
@user.route('/select_img/',methods=['GET'])
def select_img():
res = session.get('username')
if res == None: # 查到没有登陆
session['redirect'] = request.path # 保存重定向前的路由
return redirect(url_for('user.login')) # 跳转登陆
# 省略其余逻辑
return render_template('select_img.html') # 有登陆的话正常进入页面
- @登陆的路由
@user.route('/login/',methods=['GET','POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = User.query.filter(User.name == username).first()
if user and user.name == username and user.password == password:
# 登陆成功
session['username'] = user.name
res = session.get('redirect')
if res:
return redirect(res) # 重定向前的路由
return redirect('/') # 没有路由则跳转主页
return render_template('page-login.html') #登陆页面
【flask】登陆后返回之前重定向跳转的页面的更多相关文章
- php如何实现登陆后返回原页面
访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面项目需求 访问网站页面时,有的页面需要授权才能访问,这时候就会要求 ...
- asp.net 重写OnException返回json或跳转新页面
protected override void OnException(ExceptionContext filterContext) { // 此处进行异常记录,可以记录到数据库或文本,也可以使用其 ...
- Identity Server 4登陆后返回登录前页面
- (26)基于cookie的登陆认证(写入cookie、删除cookie、登陆后所有域下的网页都可访问、登陆成功跳转至用户开始访问的页面、使用装饰器完成所有页面的登陆认证)
获取cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age ...
- 登录超时,给出提示跳到登录页面(ajax、导入、导出)
一.一般页面登录超时验证,可以用过滤器filter,如下: package com.lg.filter; import java.io.IOException; import javax.servle ...
- 使用cookie记录页面跳转次数,然后从最后一级页面跳转回首页面
1.首先,给出cookie设置,获取,删除的操作函数. function setCookie(name,value) { var Days = 30; var ex ...
- shiro登陆后没有返回设置的successUrl?
第一次学习shiro的时候,并没有发现很大的问题.但后来在做项目的时候,特别是当访问的url是iframe的页面的时候,session又过期了,跳转到登陆页,完成登陆操作后,返回了只有iframe的页 ...
- Ajax+JSP登陆后带参数跳转
点击提交按钮后使用Ajax将用户名和密码传至后台校验,然后判断返回结果进行跳转或提示错误. <%@ taglib prefix="form" uri="http:/ ...
- Ubuntu输入密码登陆后又跳回到登录界面
现象:在Ubuntu登陆界面输入密码之后,黑屏一闪并且出现了check battery state之类的文字之后,又跳转到登录界面.原因:主目录下的.Xauthority文件拥有者变成了root,从而 ...
随机推荐
- 通过USB 2.0电缆手动设置内核模式调试
Windows的调试工具支持通过USB 2.0电缆进行内核调试.本文介绍如何手动设置USB 2.0调试.通过USB 2.0电缆进行调试需要以下硬件: USB 2.0调试电缆.此电缆不是标准USB 2. ...
- C# 监测每个方法的执行次数和占用时间(测试4)
今天也要做这个功能,就百度一下,结果搜索到了自己的文章.一开始还没注意,当看到里面的一个注释的方法时,一开始还以为自己复制错了代码,结果仔细一看网页的文章,我去,原来是自己写的,写的确实不咋地. 把自 ...
- vue echarts 给双饼图添加点击事件
在用 echarts 画旭双饼图( https://www.echartsjs.com/examples/zh/editor.html?c=pie-nest )的时候,经常会伴随着点击事件 如果想要在 ...
- 结构体&文件
1.本章学习内容总结 1.1学习内容总结 什么是结构类型? 结构Structure类型是一种允许程序员把一些数据分量聚合成一个整体的数据类型. 结构和数组的区别? 结构和数组的最大区别是数组中所有元素 ...
- python学习笔记二:(python3 logging函数中format说明)
背景,在学习logging时总是遇到无法理解的问题,总结,尝试一下更清晰明了了,让我们开始吧! logging模块常用format格式说明 %(levelno)s: 打印日志级别的数值 %(level ...
- java操作数据库,以页面显示学生信息为例
该部分内容实现的功能主要是:从数据库中查询数据并展示到页面,在页面中新增数据信息,在页面中修改数据信息,在页面中删除数据信息. =================stuList.jsp======== ...
- 用SC命令 添加或删除windows服务提示OpenSCManager 失败5
在安装命令行中安装 windowsOpenSCManager 失败5 的错误,原因是当前用户的权限不足,需要做的是在注册表 HKEY_LOCAL_MACHINE\Software\Microsof ...
- SQL 对decimal类型转换为int类型
) AS INT) CountQty select ISNULL( CAST(E.Qty AS INT),0 ) FROM OrderDetail E 空值 需要默认为0 即可
- pytorch ImageFolder的覆写
在为数据分类训练分类器的时候,比如猫狗分类时,我们经常会使用pytorch的ImageFolder: CLASS torchvision.datasets.ImageFolder(root, tran ...
- WebGL学习笔记(一):理解基本概念和渲染管线
WebGL 是以 OpenGL ES 2.0 为基础的 3D 编程应用接口. 渲染管线(图形流水线) 渲染管线是指将数据从3D场景转换成2D图像,最终在屏幕上显示出来的总过程.它分为几个阶段:应用阶段 ...