Flask学习记录之Flask-Login
2017-12-15 14:49
387 查看
Flask-Loging 可以方便的管理用户会话,保护路由只让认证用户访问
http://flask-login.readthedocs.org/en/latest/
(1)使用flask-login有如下两种方法
在用户模型中实现 is_authenticated()方法 返回用户是否登陆
is_active()方法 返回是否允许该用户登陆,返回false该用户将不能登陆
is_anonymous()方法 返回是否是匿名用户, 也就是未登陆的用户等
get_id() 返回可以唯一标识用户的Unicode字符串
直接让用户模型继承 flask.ext.login.UserMixin类,类中有上面4个方法的默认实现 如:
Flask-Login还提供了 flask.ext.login.AnonymousUserMixin类 继承至该类的用户模型 将作为未登陆时的用户模型,可以保持代码的一致性
(2)Flask-Login要求实现一个回调函数,使用 get_id()方法返回的唯一标识用户的Unicode字符串 作为参数 返回这个用户对象.
如果是继承的UserMixin类, get_id()方法默认返回的用户的id. 如果用户不存在,应该返回None.
(3)如果需要让页面只可又认证用户访问,可使用login_required装饰路由函数,未登陆的请求将会跳转到上面loginManager.login_view设置的登陆页面路由 如:
(4)登陆登出用户 使用如下代码:
(5)获取当前登陆的用户,
也可以在模版中使用 {% if current_user.is_authenticated() %} 判断
(6)在模版中使用,如果用户已认证就显示他的名字
http://flask-login.readthedocs.org/en/latest/
一.初始化Flask-Login
from flask.ext.login import loginManager loginManager = LoginManager(app) #如果需要延迟创建app 可使用 # loginManager = LoginManager() # loginManager.init_app(app) loginManager.session_protection = "strong" #可以设置None,'basic','strong' 以提供不同的安全等级,一般设置strong,如果发现异常会登出用户 loginManager.login_view = "login" #这里填写你的登陆界面的路由
二.配置及使用Flask-Login
(1)使用flask-login有如下两种方法在用户模型中实现 is_authenticated()方法 返回用户是否登陆
is_active()方法 返回是否允许该用户登陆,返回false该用户将不能登陆
is_anonymous()方法 返回是否是匿名用户, 也就是未登陆的用户等
get_id() 返回可以唯一标识用户的Unicode字符串
直接让用户模型继承 flask.ext.login.UserMixin类,类中有上面4个方法的默认实现 如:
from flask.ext.login import UserMixin class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64),unique=True)
Flask-Login还提供了 flask.ext.login.AnonymousUserMixin类 继承至该类的用户模型 将作为未登陆时的用户模型,可以保持代码的一致性
(2)Flask-Login要求实现一个回调函数,使用 get_id()方法返回的唯一标识用户的Unicode字符串 作为参数 返回这个用户对象.
如果是继承的UserMixin类, get_id()方法默认返回的用户的id. 如果用户不存在,应该返回None.
from . import loginManager @loginManager.user_loader def load_user(user_id): return User.query.get(int(user_id))
(3)如果需要让页面只可又认证用户访问,可使用login_required装饰路由函数,未登陆的请求将会跳转到上面loginManager.login_view设置的登陆页面路由 如:
from flask.ext.login import login_required @app.route('/index') @login_required def index(): return "只有登陆用户能看到我"
(4)登陆登出用户 使用如下代码:
from flask.ext.login import login_user, logout_user #获取要登陆的用户对象 user = User.query.filter_by(username = 'skkg').first() #第一个参数传入用户对象,第二个参数 传入 以后是否自动登陆 login_user(user,True) #登出 logout_user
(5)获取当前登陆的用户,
from flask.ext.login import current_user #判断当前用户是否是匿名用户 current_user.is_anonymous()
也可以在模版中使用 {% if current_user.is_authenticated() %} 判断
(6)在模版中使用,如果用户已认证就显示他的名字
相关文章推荐
- Flask学习记录之Flask-Login
- 学习使用Flask报错集锦记录(TOP)
- Flask学习记录之Flask-SQLAlchemy
- Flask学习记录之Flask-Mail
- Flask学习记录之Flask-Mail
- Flask学习记录之使用Werkzeug散列密码
- Flask学习记录之Flask-Moment
- Flask学习记录之Flask-SQLAlchemy
- Python个 flask 教程地址 做个记录方便以后学习用
- Flask 学习篇二:学习Flask过程中的记录
- 学习Flask-SQLAlchmy管理数据库知识记录点
- Flask学习记录之Flask-WTF
- 记一次《flask web 开发实战》flask-login学习(不完全的小整理)
- flask + MongoDB 学习笔记 (-1): 个人用记录
- flask学习笔记(二)——记录一下关于命名的一个坑,ImportError:can't import name 'Flask'
- Flask-WTF 之防止CSRF***学习记录
- Flask 学习篇二:学习Flask过程中的记录
- Flask学习记录之Flask-Migrate
- [ZHUAN]Flask学习记录之Flask-SQLAlchemy
- flask + MongoDB 学习笔记(3):Register & Hashpassword & Login & Logout