Flask学习笔记--11
来源:互联网 发布:电信4g网络覆盖范围 编辑:程序博客网 时间:2024/06/07 00:42
github中有记录。(提交时 & 写成了 % ,尴尬)
昨天写到了用户登录页面,然后需要添加用户登出功能,再对代码进行一些包装处理,使用装饰器,确保用户登录后才能继续之后的操作。
Version-13 :
1.在导航栏中添加相应的页面链接
这里使用了jinja2中的条件语句(上次写用户登录的时候,设置了session[‘logged_in’] = True)
验证用户登录后显示Logout, Dashboard链接,否则显示Register和Login链接。
_navbar.html中:
<ul class="nav navbar-nav navbar-right"> {% if session.logged_in %} <li><a href="/dashboard">Dashboard</a></li> <li><a href="/logout">Logout</a></li> {% else %} <li><a href="/register">Register</a></li> <li><a href="/login">Login</a></li> {% endif %} </ul>
2.logout功能比较容易实现,用户登录的时候创建了session,这里使用session.clear()来清除缓存数据就可以了。
@app.route("/logout")@is_logged_indef logout(): session.clear() flash("You're now logged out.","success") return redirect(url_for('login'))
注:Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。
来自百度百科-session3.logout中使用了@is_logged_in装饰器,用来判断用户有没有登录。
def is_logged_in(f): @wraps(f) def wrap(*args, **kwargs): if 'logged_in' in session: return f(*args, **kwargs) else: flash('Unauthorized, Please login', 'danger') return redirect(url_for('login')) return wrap
如果没有使用装饰器,用户直接输入logout地址:
页面会跳转到login页面,显示”You’re now logout .”不太正常:
加上装饰器的效果:
- Flask学习笔记--11
- Flask-SQLALchemy学习笔记
- Flask学习笔记-1
- Flask源码学习笔记
- flask学习笔记
- flask学习笔记(-模板)
- flask学习笔记(-数据库)
- flask学习笔记
- Flask--学习笔记-注册
- Flask学习笔记
- Flask 学习笔记
- Flask学习笔记 -- 1
- Flask学习笔记-- 2
- Flask学习笔记-- 3
- Flask学习笔记-- 4
- Flask学习笔记--5
- Flask学习笔记--6
- Flask学习笔记--7
- pyaudio 编译相关问题
- iOS 蓝牙低功耗使用
- LOJ模板题 无源汇有上下界可行流
- [LeetCode] 150. Evaluate Reverse Polish Notation
- 多个线程多把锁
- Flask学习笔记--11
- 终止Java线程
- 调用dialog.show时报异常
- arcgis javascript 鹰眼图
- iOS lable设置富文本后在最后一行没有显示省略号的问题解决
- 资讯精选 | 流量攻击态势严峻_微软7月漏洞汇总和修复建议
- VS 调用动态链接库 PInvokeStackImbalance 对 PInvoke 函数“ ”的调用导致堆栈不对称
- Spring源码-将源码导入到eclipse
- BZOJ4720 [Noip2016]换教室 解题报告【SPFA】【期望DP】