flask 中扩展 flask-login

转载于:https://www.cnblogs.com/yuqiangli0616/p/10345192.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask ,可以使用 Flask-Login 扩展来实现用户的登录保持。下面是一个简单的示例: 1. 安装 Flask-Login 扩展: ``` pip install flask-login ``` 2. 创建一个 User 类,用于表示用户信息,并实现以下方法: - `get_id()`:返回用户的唯一标识符(比如用户的 ID) - `is_authenticated()`:返回 True 表示用户已经通过认证,否则返回 False - `is_active()`:返回 True 表示用户是活跃的,否则返回 False - `is_anonymous()`:返回 True 表示这是一个匿名用户,否则返回 False ```python from flask_login import UserMixin class User(UserMixin): def __init__(self, id, name, password): self.id = id self.name = name self.password = password def get_id(self): return str(self.id) def is_authenticated(self): return True def is_active(self): return True def is_anonymous(self): return False ``` 3. 在 Flask 应用程序初始化 Flask-Login: ```python from flask_login import LoginManager app = Flask(__name__) login_manager = LoginManager() login_manager.init_app(app) ``` 4. 创建一个用于登录的视图: ```python from flask_login import login_user @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': # 获取表单数据,进行用户认证 user = authenticate(request.form['name'], request.form['password']) if user is not None: # 用户认证成功,调用 login_user() 函数,将用户信息保存到 session login_user(user) return redirect(url_for('index')) else: # 用户认证失败,返回错误信息 flash('Invalid username or password') return render_template('login.html') ``` 在上面的代码,`login_user()` 函数将用户信息保存到 session ,并设置一个 cookie,用于保持用户登录状态。 5. 创建一个用于注销的视图: ```python from flask_login import logout_user @app.route('/logout') @login_required def logout(): # 调用 logout_user() 函数,清除用户信息 logout_user() return redirect(url_for('index')) ``` 在上面的代码,`logout_user()` 函数将清除 session 保存的用户信息,并删除 cookie。 6. 最后,在需要保持用户登录状态的视图,使用 `@login_required` 装饰器: ```python from flask_login import login_required @app.route('/profile') @login_required def profile(): # 用户已经通过认证,可以访问此视图 return render_template('profile.html') ``` 在上面的代码,`@login_required` 装饰器将确保只有已经登录的用户才能访问此视图。如果未登录,将会跳转到登录页面。 以上就是使用 Flask-Login 扩展实现用户登录保持的简单示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值