flasklogin(flasklogin 非网页登陆)
本篇文章给大家谈谈flasklogin,以及flasklogin 非网页登陆对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Flask-Login 蓝图设置 session 过期时间
- 2、Flask—Login中权限(角色)管理的实现方法?
- 3、Flask博客实战 - 实现登录注册功能
- 4、关于Flask-login的user_loader的问题
Flask-Login 蓝图设置 session 过期时间
业务需要设置1小时未操作网页则过期重新登陆。码漏
因为login视图在蓝图auth.py中,在auth.py中以下设置不起作用。
此时只迟做烂需要分别在auth.py中设置 session.permanent ,在app.py中设置 app.permanent_session_lifetime 即胡搏可。
Flask—Login中权限(角色)管理的实现方法?
计算机存储的信息都是按照二进制存的,之所以有各种纯困进制只是输出形式的不同。
这个访问权限的控制,是用一位来表示一种权限,在进行某种操作时,如何判断该用户是否能够进行该操作,是通过在每次并李操作前执行权限判断,就是将该操作的权限code,与访问者角色的权限code两者相与,如何非零,则表示可以进行该操作,进而继续执行。否绝裤迟则,终止执行,抛出Permission deny。
除了这种基于二进制的权限实现方法,还可以将权限信息写到数据库中,不过原理基本一致。
[img]Flask博客实战 - 实现登录注册功能
上一节我们已经创建了一个用户应用,并创建了用户模型,那么我们这节就开始实现一个简单的用户登录注册功能!
登录注册功能Flask有一个非常优秀的扩展Flask-login,我们可以选择使用这个扩展来实现,但为了学习我们暂时不使用这个第三方扩展,而是选择使用session来实现!
首先,我们需要完善登录的html页面, 路径为: app/auth/templates/login.html
代码详解:
这个登陆模板继承了 base.html 的样式,这个 base.html 中的模块及代码其实就是我们之前实现的首页,只是我们把他作为一个模板基类来继承他!
这段代码中其实就是写了一个输入账号密码的表单,其他多余的代码都是为了实现表单的样式而存在的!
这里要特别说明的是这个input表单必须设置name属性,因为后端要根据此name属性来获取用户输入的值!其他属性则需要大家自行去了解学习!
登录功能的后端逻辑视图, 路径为: app/auth/views/auth.py
代码详解: - request.method == 'POST' 判断当前请求是否为post请求方式 - error = None 来初始化一个错误变量,如果未通过登录验证,把错误信息通过消息传送到页面提示用户
这段代码首先在数据库通过用户提交的用户名去查询该用户,用户不存在就会返回None返回错误提示,用户存在则判断密码是否正确,这里用到了一个 check_password_hash() 的方法,这是用来将密文密码解密后与用户输入密码比对方法,与之辩判对应的有一个 generate_password_hash() 的方法用来加密明文密码保存到数据库!
这段代码则是如果没有返回任何错误提示,说明该提交的表单符合我们的要求,并且数据库也存在该用户信息,那么我们只需要清空session,重新将session中的user_id设置为当前登录的id即可!
因此在实现登录注册逻辑之前就必须引入这两个方法:
登录功能虽然实现了,但我们数据库目前还没有任何一个用户,所以此时就应该要去实现用户的注册功能,向数据库新增用户,大概的逻辑是,用户输入用户名及两次密码,先判断该用户是否已经存在,存在则提示更换用户名,不存在则向数据库创建该用户信息,并清空session,重新设置user_id的值为注册用户的id,以达到注册成功后自动登录的目的!
首先,我们需要完善注册的html页面, 路径为: app/auth/templates/register.html
这是注册页面的html,大家自行理解下,这里着重说一个我们在视图中通过 flash() 传递出来的消息,在模板中由以下代码接收!
注册功能的后端逻辑视图, 路径为: app/auth/views/auth.py
这个注册的逻辑基本上涵盖了我们之前所拍缺有章节学到的知识点,这里就不再过多地去一一解释代码,大家可自行理解并完善注释!
通过登录和注册功能的实现,我们已经清楚地知道,用户是否登录其实是判断session会话携贺改中是否存在用户的id来决定,那么推出登录,我们只需要清除session会话中的用户id即可,这里我们直接选择清空session的方式实现推出功能!
bp.before_app_request() 注册一个在视图函数之前运行的函数,无论请求什么 URL。 都会先检查用户 ID 是否存储在会话中,并从数据库获取该用户的数据,将其存储在 g.user 上,该数据在请求期间持续。
注册完这个函数之后,我们就可以在base.html中的导航的最右侧通过g.user的返回值,判断用户是否已经登录,显示不同的信息!
对于像下一章节我们要实现的用户中心以及管理后台,则必须是带有权限的访问,最基本的权限应该是必须是登录用户,那么所以说对于那些未登录的用户我们需要拒绝访问的功能!
这个其实思路也非常简单,既然在实现模板中调用用户信息的时候,我们把当前登录的用户信息添加到了g对象,那么我们只需要判断g.user的返回值是否为None即可判断用户是否登陆!
到这里关于用户登录注册相关的基本权限问题我们就完成了,注意这些视图函数都在 app/auth/views/auth.py 文件中!
关于Flask-login的user_loader的问题
from flask.ext.login import LoginManager #引入包
login_manager = LoginManager()
login_manager.session_protection = '州猜strong'
login_manager.login_view = 'auth.login'
@login_manager.user_loader
def load_user(user_id):
user = User.query.get(int(user_id))
。。。册镇型。。。旅信
关于flasklogin和flasklogin 非网页登陆的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。