flask之flask-login登陆验证(一)

这个模块能帮助我们做很多事,最常用到的是,登陆验证(验证当前用户是否已经登陆)、记住我功能

一 安装

pip install flask-login

二 导入相关模块及对象并初始化

from flask_login import login_manager, UserMixin

login_manager_local = login_manager.LoginManager()
login_manager_local.init_app(app)
login_manager_local.session_protection = ‘strong‘
login_manager_local.login_view = ‘login‘

三 使用

1、定义一个User类

#继承db.model 是为了方便操作数据库

class User(db.Model, UserMixin):
    __tablename__ = ‘users‘
    id = db.Column(db.Integer, autoincrement=True, primary_key=True)
    username = db.Column(db.String(20), unique=True, index=True)
    pwd_hash = db.Column(db.String(300))

    def __init__(self, username, pwd):
        self.username = username
        self.pwd = pwd

    @staticmethod
    def query_by_username(username):
        return User.query.filter(User.username == username).first()

    @property
    def pwd(self):
        raise AttributeError(u‘密码不可读‘)

    @pwd.setter
    def pwd(self, pwd):
        self.pwd_hash = generate_password_hash(pwd)

    def verify_password(self, pwd):
        return check_password_hash(self.pwd_hash, pwd)

    def __repr__(self):
        return ‘<User:%s>‘ % self.username

2、登陆

使用login_user登陆user后就可以使用登陆验证@login_required

@app.route(‘/login‘, methods=[‘GET‘, ‘POST‘])
def login():
    if request.method == ‘GET‘:
        form = LoginForm()
        return render_template(‘login.html‘, form=form)
    else:
        form = LoginForm(request.form)
        if form.validate():
            username = request.form[‘name‘]
            pwd = request.form[‘pwd‘]
            user = User.query_by_username(username)

            if user and user.verify_password(pwd):
                login_user(user)
                return ‘login ok‘
        else:
            print(form.errors)
        return render_template(‘login.html‘, form=form)

4、登陆验证

@app.route(‘/‘)
@login_required
def hello_world():
    raise CustomFlaskErr(D_IP_MASK_FORMAT_ERROR)
    raise CustomFlaskErr(payload={u"错误": u"测试信息"})

原文地址:https://www.cnblogs.com/lfxiao/p/9184292.html

时间: 2024-07-29 04:25:14

flask之flask-login登陆验证(一)的相关文章

Flask(2):登陆验证

装饰器补充: import functools def auth(func): @functools.wraps(func) # 作用:把原函数的原信息封装到 inner 中 def inner(*args,**kwargs): ret = func(*args,**kwargs) return ret return inner @auth def index(): print("index") # function.__name__ # 获取函数名 print(index.__nam

基于Flask 实现Web微信登陆

网页版微信登陆网址 https://login.wx.qq.com/ 获取微信登陆的二维码 在浏览器中访问登陆接口 https://login.wx.qq.com/ 我们查找二维码的图片可以看到 其中src为 https://login.weixin.qq.com/qrcode/Yd5dz5xUnw==" 而我们每次刷新都会生成一个新的二维码 多刷新几次我们会发现二维码中src最后面的qrcode/......值每次都会改变 ,索引肯定会有一些请求可以获取这些值 我们继续追踪发现下面的地址会返回

flask框架----flask基础

知识点回顾 1.flask依赖wsgi,实现wsgi的模块:wsgiref,werkzeug,uwsgi 2.实例化Flask对象,里面是有参数的 app = Flask(__name__,template_folder='templates',static_url_path='/xxxxxx') 3.两种添加路由的方式 方式一: @app.route('/xxxx') # @decorator def index(): return "Index" 方式二: def index():

网站后端_Python+Flask.0010.FLASK即插视图之自定义视图类及视图修饰?

即插视图; 说明: FLASK的视图灵感来自于DJANGO的基于类而非基于函数的通用视图,主要目的是为了解决多个视图函数之间已经实现的部分,通过类继承的方式继承到其它视图,总之为了一点,就是少写代码,然后通过add_url_rule让我们定义的视图类支持动态插入,也就是所谓的即插视图 深入视图: # 转换前: #!/usr/bin/env python # -*- coding: utf-8 -*- """ # # Authors: limanman # 51CTOBG: h

django简单用户登陆验证

一.django简单用户登陆验证   前端页面:     <div class="container  col-lg-6  col-lg-offset-4">         <br><br><br><br><br>       <form class="form-signin col-sm-4 col-lg-offset-2" action="{% url 'login' %}

asp.net 在AcquireRequestState事件中判断登陆验证。

Global中添加AcquireRequestState事件. protected void Application_AcquireRequestState(object sender, EventArgs e) { Uri url = Request.Url; //得到当前请求的URL //访问Admin目录,需要进行登陆验证. if (url.AbsolutePath.ToLower().StartsWith("/admin")) { //如果Login.aspx写在admin目录

MVC用户登陆验证及权限检查(Form认证)

1.配置Web.conf,使用Form认证方式 <system.web> <authentication mode="None" /> <compilation debug="true" targetFramework="4.6.1" /> <httpRuntime targetFramework="4.6.1" /> <authentication mode="

Shrio登陆验证实例详细解读

摘要:本文采用了Spring+SpringMVC+Mybatis+Shiro+Msql来写了一个登陆验证的实例,下面来看看过程吧!整个工程基于Mavevn来创建,运行环境为JDK1.6+WIN7+tomcat7. 这里主要说了Shiro的搭建过程,Spring+SpringMVC+Mybatis的搭建过可以看这里Spring+Mybatis+SpringMVC+Maven+MySql搭建实例 整个工程免费下载: 最终效果如下: 工程整体的目录如下: java代码如下: 配置文件如下: 页面资源如

[Flask]学习Flask第三天笔记总结

1 from flask import Flask,render_template,request 2 from others import checkLogin 3 app = Flask(__name__) 4 5 #从templates里引用index.html 6 #return render_template("index.html") 7 @app.route('/') 8 def index(): 9 return '''<form action="/lo