################################################################################

from flask.ext.login import LoginManager, login_required, UserMixin, login_user, logout_user, current_user

from flask import session,g

@app.before_request

def before_request():

g.user = current_user

app.secret_key = 's3cr3t'

login_manager = LoginManager()

login_manager.session_protection = 'strong'

login_manager.login_view = 'xlogin'

login_manager.init_app(app)

class User(UserMixin):

@property

def is_authenticated(self):

return True

@property

def is_actice(self):

return True

@property

def is_anonymous(self):

return False

def get_id(self):

return "100"

@login_manager.user_loader

def load_user(user_id):

user = User()

return user

@app.route('/xlogin', methods=['GET', 'POST'])

def xlogin():

if g.user is not None and g.user.is_authenticated:

return redirect(url_for('index'))

form = LoginForm2()

if form.validate_on_submit():

flash('%s  %s  %s' %(form.username.data, form.password.data, form.remember_me.data))

if form.username.data == "sysnap" and form.password.data == "sysnap":

user = User()

login_user(user)

return redirect('/index')

return render_template('loginform.html',

title='login',

form=form)

@app.route('/xlogout', methods=['GET', 'POST'])

def xlogout():

logout_user()

return "logout page"

@app.route('/xtest')

@login_required

def xtest():

return "yes , you are allowed"

form定义为

class LoginForm2(Form):

username = StringField('name', validators=[DataRequired()])

password = PasswordField('password', validators=[validators.Required()])

remember_me = BooleanField('remember', default=False)

submit = SubmitField('Submit')

HTML

<!-- extend from base layout -->

{% extends "base.html" %}

{% block content %}

<h1>{{title}}</h1>

<form action="" method="post" name="loginform">

{{ form.hidden_tag() }}

<p>

{{ form.username.label }} {{ form.username() }}

{% for error in form.username.errors %}

<span style="color: red;">[{{ error }}]</span>

{% endfor %}

</p>

<p>

{{ form.password.label }} {{ form.password() }}

{% for error in form.password.errors %}

<span style="color: red;">[{{ error }}]</span>

{% endfor %}

</p>

<p>{{ form.remember_me }} remember</p>

{% for error in form.remember_me.errors %}

<span style="color: red;">[{{ error }}]</span>

{% endfor %}<br>

<p>

{{ form.submit() }}

</p>

</form>

{% endblock %}

Flask-login 例子的更多相关文章

  1. windows下测试flask的例子tuorial报错flask KeyError: 'DATABASE'

    windows下测试flask的例子tuorial报错flask KeyError: 'DATABASE' flask KeyError: 'DATABASE' 提示是 变量 database错误 由 ...

  2. Flask admin Flask login 整合模板

    项目地址: https://github.com/WES6/supflask Flask admin 官方文档: https://flask-admin.readthedocs.io/en/lates ...

  3. FLASK 使用方法

    Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档,大部分代码引用自官方文档. 安装Flask 首先我们来安装F ...

  4. python Flask篇(一)

    MarkdownPad Document *:first-child { margin-top: 0 !important; } body>*:last-child { margin-botto ...

  5. 欢迎来到 Flask 的世界

    欢迎来到 Flask 的世界 欢迎阅读 Flask 的文档.本文档分成几个部分,我推荐您先读 < 安装 >,然后读< 快速上手 >.< 教程 > 比快速上手文档更详 ...

  6. Python之flask框架2

    Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档,大部分代码引用自官方文档. 安装flask 首先我们来安装F ...

  7. Flask服务入门案例

    安装 pip install Flask 入门例子 from flask import Flask app = Flask(__name__) @app.route('/hello.world') d ...

  8. Struts 1.3(第一例) - Login

    本想跳过直接学Struts 2的,想想,还是先学Struts 1,万一到时去那个公司,人家用的是1,那还是要学,以及了解下1与2的区别在哪里. 上例子,很简单的一个网上login例子,再思考下Stru ...

  9. flask开发restful api系列(6)-配置文件

    任何一个好的程序,配置文件必不可少,而且非常重要.配置文件里存储了连接数据库,redis的用户密码,不允许有任何闪失.要有灵活性,用户可以自己配置:生产环境和开发环境要分开,最好能简单的修改一个东西, ...

  10. flask基础--第二篇

    1.Flask中的HTTPResponse,Redirect, render #导入render_template和redirect from flask import Flask,render_te ...

随机推荐

  1. IOC实现-Unity

    .NET中实现IOC有很多方式,比如:Unity.Ninject.Autofac.MEFNinject的实现参考<Pro ASP.NET MVC3.5 FrameWork>下面给出的是Un ...

  2. Kong命令(二)service

    service介绍: service 是声明了一组name.host.port.protocol等配置的函数.可以绑定route.upstream上下游服务.并且对于route.upstream可以绑 ...

  3. Python笔记-备忘

    一.向列表添加元素 x.append(y) #末尾添加一个元素 x.extend([y,z]) #末尾添加多个元素 x.insert(index,y) 二.向列表获取元素 x[index] 三.从列表 ...

  4. $.serializeArray()获取不到input的value值bug问题

    今天修改form表单,发现有好几个input值保存不上,上网搜索了一下是$.serializeArray()获取不到disabled的值.如果想要让input元素变为不可用,可以把input设为rea ...

  5. Apache Log View 5.37破解笔记

    i春秋作家:Sp4ce 之前说过要分享这个日志分析工具[记一次简单的攻击日志分析]的破解版,在破解的路上踩了几个坑,记录分享下. 0×00程序概述 原程序 大小: 2283672 字节文件版本: 5. ...

  6. hadoop相关随记

    1.用来查询集群上启动的job,并杀掉DumpTrack状态的job: yarn application -list|grep DumpTrack|awk '{print $1}' | xargs y ...

  7. No result defined for action com.java.test.Action.HelloAction and result index

    Struts中配置action访问出错: Struts Problem Report Struts has detected an unhandled exception: Messages: No ...

  8. 三道习题(1、将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别。 #输入格式:按字典序由小到大输入若干个单词,每个单词占一行,以end结束输入。)

    #coding=gbk ''' 1.将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别. #输入格式:按字典序由小到大输入若干 ...

  9. JavaEE企业面试问题之JavaWeb

    2.Javaweb阶段 2.1 Ajax你以前用过么?简单介绍一下 AJAX = 异步 JavaScript 和 XML.    AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少 ...

  10. Node.js 调试小技巧

    小技巧--使用 supervisor如果你有 PHP 开发经验,会习惯在修改 PHP 脚本后直接刷新浏览器以观察结果,而你在开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一 ...