flask笔记三:flask-login插件的使用
flask-login插件的使用
安装:
pip install flask-login
初始化LoginManager
##############LoginManager设置##################
loginmanager=LoginManager()
loginmanager.login_view='biziness.flask_login' 业务逻辑层中的flask_login视图函数
loginmanager.session_protection='strong'
loginmanager.login_message='pls login to access this page'
##################结束设置#####################
##############f################
@loginmanager.user_loader
def load_user(userid):
from DataAccess.userModels import users
return users.query.get(userid)
注释:
flask使用@loginmanager.user_loader所装饰的函数,检查给定的参数id是否对应返回了一个正确的用户对象
#############################
def CreateApp():
'''
init flask
:return:
'''
path = os.path.abspath(os.path.curdir)
templateFolder = os.path.join(path, 'templates')
staticFilesFolder=os.path.join(path,'static')
app=Flask(__name__,template_folder=templateFolder,static_folder=staticFilesFolder)
app.config.from_object(devConfig)
app.debug=False
loginmanager.init_app(app) #初始化,与app实例绑定
bcrypt.init_app(app)
return app
要正常的使用flask-login,用户模型对象需要添加一些方法以满足flask的需要,如下所示:
用户模型类
from flask_login._compat import unicode
from .DbInit import db
from ext.config import bcrypt
from flask_login import AnonymousUserMixin
class users(db.Model):
__tablename__ = 'User'
id=db.Column(db.Integer,autoincrement=True,primary_key=True)
username=db.Column(db.String(10),nullable=True)
account=db.Column(db.String(100),nullable=True,unique=True)
password=db.Column(db.BINARY(100),nullable=True)
age=db.Column(db.Integer,nullable=True)
job=db.Column(db.String(100),nullable=True)
address=db.Column(db.String(100),nullable=True)
userEmail=db.Column(db.String(100),nullable=True)
groupId=db.Column(db.Integer,db.ForeignKey('Group.id'))
def is_authenticated(self):
if isinstance(self,AnonymousUserMixin):
return False
else:
return True
def is_active(self):
return True
def is_anonymous(self):
if isinstance(self,AnonymousUserMixin):
return True
else:
return False
def get_id(self):
return unicode(self.id)
其中:
is_authenticated:表示user对象是否登录
is_active:表示用户是否激活,如:激活状态和未激活状态采用不同的处理
is_anonymous:表示访问者是否处于未登录的匿名状态
get_id:返回user对象的唯一识别标志
视图处理函数:
from werkzeug.utils import secure_filename
from . import biz_blue
from DataAccess.DbInit import db
from Biziness.formClass.userInfo import users
from DataAccess.userModels import users as u
from flask import render_template
from flask import request,session, redirect
from ext import factory
from flask_login import login_user,login_required,logout_user,current_user
import os
@biz_blue.route('/flasklogin/',methods=['GET','POST'])
def flask_login():
from Biziness.formClass.userInfo import users as userForm
from DataAccess.userModels import users
user_form=userForm()
if request.method=='GET':
return render_template('Apps/login.html',form=user_form)
else:
account=user_form.account.data
password=user_form.password.data
user=None
try:
user=users.query.filter(users.account==account).one()
except:
return redirect('/flasklogin/')
if user:
login_user(user,remember=True)
return redirect('/welcome/')
@biz_blue.route('/welcome/')
@login_required
def welcomeLogedUser():
user=current_user
print(user.account)
return 'welcome to our page!!!'
@biz_blue.route('/loginout/')
def logout():
logout_user()
return 'logout successful!!!'
以上代码为使用flask-login插件的登录代码。
flask-login还提供了一个current_user代理对象来访问当前的登录用户,这个对象在视图和模版中都可以使用
在视图可以使用{{current_user}}来访问当前的用户对象,如果需要访问对象中的属性时,添加相应的属性访问即可,如{{current_user.account}} 即当前访问的帐户
flask笔记三:flask-login插件的使用的更多相关文章
- flask笔记(三)Flask 添加登陆验证装饰器报错,及解析
Flask 添加登陆验证装饰器报错,及解析 写这个之前,是想到一个需求,这个是关于之前写Flask笔记(二)中的一个知识点,路由相关 需求为 : 有一些页面必须是登陆之后才能访问的,比如Shoppin ...
- Vue-cli开发笔记三----------引入外部插件
(一)绝对路径直接引入: (1)主入口页面index.html中头部script标签引入: <script type="text/javascript" src=" ...
- Flask笔记(一)
first_flask_project.py # 从flask这个包中导入Flask这个类 # Flask这个类是项目的核心,以后很多操作都是基于这个类的对象 # 注册url.注册蓝图等都是基于这个类 ...
- Flask笔记1
Flask笔记 首先明确一下,要运行一个动态网页,我们需要 一个 Web 服务器来监听并响应请求,如果请求的是静态文件它就直接将其返回,如果是动态 url 它就将请求转交给 Web 应用. 一个 We ...
- FLASK 的Session和MoudelForm插件
falsk是小而精的框架,但是热度高, 所有很多爱好者提供了很多扩展插件 功能强大,美而不足的就是兼容稳定性有时候不太好,不过大部分还是很可以的 Flask-Session flask内置sessio ...
- flask基础三
一.路由和视图(基础二上补充) (1)有参装饰器 路由采用的是有参装饰器实现的 @app.route("/index",methods=["GET"," ...
- flask 第三章 特殊装饰器 CBV Flask-Session WTForms
1.flask中的特殊装饰器 前面我们讲过的装饰器函数中,用来登录验证,这次我们来介绍几个flask中的特殊装饰器 1). @app.before_request 具体的用途是: 在请求进入视图函数之 ...
- Flask备注三(Context)
Flask备注三(Context) Flask支持不同的应用场景下,对应不同的local context(本地上下文环境),用来提供当前环境下的资源.lcoal context和全局变量以及局部变量最 ...
- flask笔记---url、变量规则
1.路由: route() 装饰器用于把一个函数绑定到一个 URL,可以动态变化 URL 的某些部分,还可以为一个函数指定多个规则,从而方便用户访问与记忆. 例子: @app.route('/') # ...
随机推荐
- ssh 使用密钥无法登入Linux系统
今天测试密钥登入linux系统时 出现如下问题: root@compute01:~# ssh alicxxx@xxx.com -p -i alickicxxxxxxx.key @@@@@@@@@@@@ ...
- 如何自己写aspx过狗D盾一句话木马
hi,我是凉风,(以下内容纯属个人见解,如有不同的意见欢迎回复指出) ,本菜比发现aspx过狗的姿势不常见,不像php一样一抓一大把,于是我决定研究一下aspx 本文作者:i春秋签约作家——凉风 引用 ...
- Linux磁盘及文件系统(三)Linux文件系统
一.文件系统的组成 Linux常见的文件系统类型有ReiserFS,ext2,ext3,ext4,vfat,XFS等,文件系统是对一个存储设备上数据和元数据进行组织的机制.他的最终目的是把大量数据有组 ...
- mxonline实战13,授课讲师列表页,详情页,index页面全局导航
对应github地址:第13天 把teacher-list.html和teacher-detail.html拷贝过来 一. 授课讲师列表页 1. 修改html文件 把org-list.ht ...
- 总结day6 ---- set集合,基本类型的相互转化,编码,数据类型总结,循环时候不要动列表或者字典,深浅copy
python小数据池,代码块的最详细.深入剖析 一. id is == 二. 代码块 三. 小数据池 四. 总结 一,id,is,== 在Python中,id是什么?id是内存地址,比如你利用id ...
- 代码 | 自适应大邻域搜索系列之(3) - Destroy和Repair方法代码实现解析
前言 上一篇文章中我们具体解剖了ALNS类的具体代码实现过程,不过也留下了很多大坑.接下来的文章基本都是"填坑"了,把各个模块一一展现解析给大家.不过碍于文章篇幅等原因呢,也不会每 ...
- XorPay 个人支付平台增加 个人支付宝支付接口
XorPay 今天新增 个人支付宝当面付 接口,欢迎大家使用. 「 XorPay 支付平台」 已经同时支持 个人微信支付接口 和 个人支付宝接口. 个人可用的 支付宝/微信支付 接口,支持 当面付 ...
- 28.earch in Rotated Sorted Array(排序旋转数组中查找)
Level: Medium 题目描述: Suppose an array sorted in ascending order is rotated at some pivot unknown to ...
- 常用的re正则
常用的正则表达式: 用户名:/^[a-z0-9_-]{3,16}$/ 密码:/^[a-z0-9_-]{6,18}$/ 十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/ 电子邮 ...
- centos6.5安装docker(亲测)
centos6.5下安装docker的过程办法 在看了网上N多复制粘贴的文章,又尝试无效后,我把我最终成功的办法发出来,希望能帮到拼命干环境的你. 操作环境: centos6.5(Final) 内核: ...