瓶判断用户已经登录的方法

  介绍

这篇文章主要介绍了瓶判断用户已经登录的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

瓶判断用户登录,主要思想就是通过会话中是否有指定的值来判定用户是否已经登录,登录及跳转到指定的页面否则跳转到登录界面进行登录。

首先写一个登录的试图函数:

def 登录():   ,,,if  request.method ==, & # 39;得到# 39;:   ,,,,,,,return  render_template (& # 39; login.html& # 39;)   ,,,user =, request.form.get(& # 39;用户# 39;),,,   ,,,#形式的表单提交的数据request.form 类似于帖子请求request.args 类似django的request.get   ,,,pwd =, request.form.get (& # 39; pwd # 39;)   ,   ,,,if  user ==& # 39; gallo # 39;,以及pwd==& # 39; 123 & # 39;   ,,,,,,,会话(& # 39;用户# 39;],=,用户   ,,,,,,,return 重定向(& # 39;/回家# 39;   ,,,return  render_template (& # 39; login.html& # 39;,错误=坝没砦蟆?

方法一:

每次在函数内首先进行会话的判定:

@app.route(& # 39;/回家# 39;   def 家居():   ,,,user =, session.get(& # 39;用户# 39;)   ,,,if  not 用户:   ,,,,,,,return 重定向(& # 39;/登录# 39;   ,,,return  render_template (& # 39; home # 39;)

每次在函数内部最前面先进行会话的判定,满足则跳转到& # 39;/回家# 39;页面,否则跳转到& # 39;& # 39;/登录# 39;页面。

此方法的弊端:重复代码过多不利于开发。所以需要改进

<强>方法二:装饰器

通过装饰器来对其进行判定:

import  functools   def  is_login(函数):   ,,,@functools.warps(函数)   ,,,def 内部(* args, * * kwargs):   ,,,,,,,user =, session.get(& # 39;用户# 39;)   ,,,,,,,if  not 用户:   ,,,,,,,,,,,return 重定向(& # 39;登录# 39;)   ,,,,,,,return  func (* args, * * kwargs)   ,,,return 内在

我们可以看到此装饰器里面还有一个functools.waprs():的函数,这样做的目的是为了通过装饰器后不改变函数的性质,如果不加装饰器所有函数都名字会是内部函数,加上此函数可以不改变函数的性质。

所以加上装饰器的函数将会是:

@app.route(& # 39;/回家# 39;   @is_login   def 家居():   return  render_template (& # 39; home # 39;)

这样就节省了很大的代码空间,但是只有更好没有最好,只有更简洁的代码没有最简洁的代码,所以出现了方法三。

<强>方法三:before_request:

berfore_request的作用是在所有函数执行之前都应该先执行before_request函数。

所以只需要单独写一个函数来实现before_request的功能即可。