登陆后返回之前重定向跳转的页面

一、前言

实现强制跳转到登陆页面,登陆后返回之前的页面的功能。网上跳登陆页面的很多;返回之前页面功能没多少。这里我只是用了自己的方法,有缺点和其他方法也请指点!(´ε`)

二、session

1、Session的概念

Session是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session。

2、flask操作session:

  1. 设置session:通过flask.session就可以操作session了。操作session就跟操作字典是一样的。session['username']='zhiliao'。
  2. 获取session:也是类似字典,session.get(key)。
  3. 删除session中的值:也是类似字典。可以有三种方式删除session中的值。
  • session.pop(key)。
  • del session[key]。
  • session.clear():删除session中所有的值。
  1. 设置session的有效期:如果没有设置session的有效期。那么默认就是浏览器关闭后过期。如果设置session.permanent=True,那么就会默认在31天后过期。如果不想在31天后过期,那么可以设置app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hour=2)在两个小时后过期

三、设计思路

1、流程

graph LR
V(访问) --> A(选择图片页面)
A --未登陆--> B(登陆页面)
B --登陆成功--> A
graph LR
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】登陆后返回之前重定向跳转的页面的更多相关文章

  1. php如何实现登陆后返回原页面

    访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面项目需求 访问网站页面时,有的页面需要授权才能访问,这时候就会要求 ...

  2. asp.net 重写OnException返回json或跳转新页面

    protected override void OnException(ExceptionContext filterContext) { // 此处进行异常记录,可以记录到数据库或文本,也可以使用其 ...

  3. Identity Server 4登陆后返回登录前页面

  4. (26)基于cookie的登陆认证(写入cookie、删除cookie、登陆后所有域下的网页都可访问、登陆成功跳转至用户开始访问的页面、使用装饰器完成所有页面的登陆认证)

    获取cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age ...

  5. 登录超时,给出提示跳到登录页面(ajax、导入、导出)

    一.一般页面登录超时验证,可以用过滤器filter,如下: package com.lg.filter; import java.io.IOException; import javax.servle ...

  6. 使用cookie记录页面跳转次数,然后从最后一级页面跳转回首页面

    1.首先,给出cookie设置,获取,删除的操作函数. function setCookie(name,value) {          var Days = 30;          var ex ...

  7. shiro登陆后没有返回设置的successUrl?

    第一次学习shiro的时候,并没有发现很大的问题.但后来在做项目的时候,特别是当访问的url是iframe的页面的时候,session又过期了,跳转到登陆页,完成登陆操作后,返回了只有iframe的页 ...

  8. Ajax+JSP登陆后带参数跳转

    点击提交按钮后使用Ajax将用户名和密码传至后台校验,然后判断返回结果进行跳转或提示错误. <%@ taglib prefix="form" uri="http:/ ...

  9. Ubuntu输入密码登陆后又跳回到登录界面

    现象:在Ubuntu登陆界面输入密码之后,黑屏一闪并且出现了check battery state之类的文字之后,又跳转到登录界面.原因:主目录下的.Xauthority文件拥有者变成了root,从而 ...

随机推荐

  1. NET PDB文件到底包含多少秘密?

    虽然我希望.NET PDB文件与本地PDB文件处理方式相同,但我们在这件事上没有任何选择,因为事情就是这样.我相信微软的调试器团队多年来听到过很多类似帕特里克的评论.也许我们会在未来的Visual S ...

  2. 03-树2 List Leaves (25 分)

    Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...

  3. 02-线性结构4 Pop Sequence (25 分)

    Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...

  4. mysql 字段添加以及删除

    mysql> select * from user; +------+-----------+-----------+ | id | name | address | +------+----- ...

  5. 前端VScode推荐插件

    Auto Close Tag 自动添加HTML / XML关闭标签 Auto Rename Tag 自动重命名配对的HTML / XML标签 Beautify 格式化代码 [必须]Bracket Pa ...

  6. Linux 踢掉其他终端用户

    输入W查看信息 root@HAN:~# w 09:02:36 up 8 days, 20:10, 1 user, load average: 0.00, 0.00, 0.00 USER TTY FRO ...

  7. 循环(for,while,until)与循环控制符(break,continue)

    一.for循环 第一种风格   for ((;;;))(类似C语言风格) do command done 例子:for ((i=0;i<10;i++)) do echo $i done 第二种风 ...

  8. spring @Transactional 事务注解的坑

    1. 在需要事务管理的地方加@Transactional 注解.@Transactional 注解可以被应用于接口定义和接口方法.类定义和类的 public 方法上. 2. @Transactiona ...

  9. https://www.cnblogs.com/LBSer/p/3310455.html

    https://www.cnblogs.com/LBSer/p/3310455.html

  10. odoo开发笔记--定时任务源码分析

    场景描述: 处理思路: 参考文章: 定时任务相关: https://www.jianshu.com/p/ad48239f84d6 https://blog.csdn.net/M0relia/artic ...