nicegui最佳实践之“用户认证”
1.问题:
这一节开发一个相对大些的应用------“用户登录”页面。用户登录需要有什么呢?大体分为以下几个大块。
登录框页面 --> 密码验证(数据库) --> 用户注册页面 -->用户会话保存。
2.核心概念:
- “登录框页面 ”
提供了登录的能力。至少一个“用户名”输入框、一个“密码”输入框,还有一个“登录”按钮。 - “密码验证(数据库)”
通过SQLAlchemy完成数据库和实体类的ORM映射。关于ORM,建议大家边用边学。相信大部分数据人宁可写SQL也不愿意多写代码,但是实际情况是ORM会大大地减少“增删改查”过程中的SQL,让你的代码看上去更容易理解。不用学太深,够用就好! - “用户注册页面”
相比“登录框页面 ”得多一个“再次输入密码”的输入框。 - “用户会话保存”
这个对于web接触较少的同学可以这样理解,登录前和登录后显示的界面得不一样吧?登录后在网站上的操作得有地方记录吧?我对页面进行了操作,别人能不能看到呢?这些其实都是对用户会话的保存。nicegui 对存储有五种存储类型,官网写的琐碎,我整理成下面的表格,关注“场景”就好。
存储类型 | 会话范围 | 服务器端存储 | 场景 | 说明 |
---|---|---|---|---|
app.storage.tab | 标签页 | 是 | 相当不重要的数据、页面刷新即失效的数据 | 每个浏览器tab页都有一个独立的app.storage.tab字典,存储当前tab页的对象 |
app.storage.client | 客户端 | 是 | 大文件、数据库连接、视频、音频等 | 当页面重新加载或用户导航到另一个页面时,数据将被丢弃。与app.storage.tab中的数据不同,app.storage.client可以帮助缓存资源密集型对象,如流媒体或数据库连接,这些对象需要在动态站点更新时保持活动状态,但在用户离开页面或关闭浏览器时可以被丢弃。 |
app.storage.user | 存在浏览器的cookie中 | 是 | 最常用 | 每个用户都有唯一的存储空间,可以在所有他们的浏览器选项卡中访问。注意域app.storage.browser区别 |
app.storage.general | 所有用户共享 | 是 | 多用户共享的数据 | 共享么,所有人共用 |
app.storage.browser | 存在浏览器的cookie中 | 否 | 不常用 | 只存储在客户端,官网更推荐用app.storage.user |
3.示例代码:
from nicegui import ui,app