MIT License

项目介绍

maxcountryman/flask-login 是一个托管在 GitHub 上的开源项目,主要使用 Python 编写,采用 MIT License 许可证,目前获得 3.7k 个 Star、784 次 Fork。

仓库全名
maxcountryman/flask-login
开源许可证
MIT License
Star 数
3.7k
Fork 数
784
未关闭 Issue
8

README 摘要

Flask-Login Flask-Login provides user session management for [Flask][]. It handles the common tasks of logging in, logging out, and remembering your users' sessions over extended periods of time. Flask-Login is not bound to any particular database system or permissions model. The only requirement is that your user objects implement a few methods, and that you provide a callback to the extension capable of loading…

完整内容见 GitHub 原始 README 或本页 。

常见问题

flask-login 用什么语言开发?

主要使用 Python 编写,采用 MIT License 许可证,目前有 3.7k 个 Star。

flask-login 可以免费商用吗?

仓库采用 MIT License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 flask-login 的源码?

可以直接克隆仓库:git clone https://github.com/maxcountryman/flask-login.git,默认分支为 main;安装与运行步骤见仓库 README。

flask-login 最近还在维护吗?

仓库最近一次更新为 1 周前,当前有 8 个未关闭 Issue;Star 数为 3.7k,可作为社区活跃度的参考。

简要分析

热度分
5308
价值分
2445
活跃状态
活跃

语言占比

Python

Release

README

Flask-Login

Flask-Login provides user session management for Flask. It handles the common tasks of logging in, logging out, and remembering your users’ sessions over extended periods of time.

Flask-Login is not bound to any particular database system or permissions model. The only requirement is that your user objects implement a few methods, and that you provide a callback to the extension capable of loading users from their ID.

Read the documentation at https://flask-login.readthedocs.io.

A Basic Example

Let’s walk through setting up a basic application. Note that this is a very basic guide: we will be taking shortcuts here that you should never take in a real application.

To begin we’ll set up a Flask app and a LoginManager from Flask-Login.

import flask
import flask_login

app = flask.Flask(__name__)
app.secret_key = "super secret string"  # Change this!

login_manager = flask_login.LoginManager()
login_manager.init_app(app)

To keep things simple we’re going to use a basic User class and a dictionary to represent a database of users. In a real application, this would be an actual persistence layer. However, it’s important to point out this is a feature of Flask-Login: it doesn’t care how your data is stored so long as you tell it how to retrieve it!

class User(flask_login.UserMixin):
    def __init__(self, email, password):
        self.id = email
        self.password = password

users = {"leafstorm": User("leafstorm", "secret")}

We also need to tell the login manager how to load a user from a request by defining its user_loader callback. If no user is found it returns None.

@login_manager.user_loader
def user_loader(id):
    return users.get(id)

Now we’re ready to define our views. The login view will populate the session with authentication info. The protected view will only be avialble to authenticated users; visiting it otherwise will show an error. The logout view clearing the session.

@app.get("/login")
def login():
    return """<form method=post>
      Email: <input name="email"><br>
      Password: <input name="password" type=password><br>
      <button>Log In</button>
    </form>"""

@app.post("/login")
def login():
    user = users.get(flask.request.form["email"])

    if user is None or user.password != flask.request.form["password"]:
        return flask.redirect(flask.url_for("login"))

    flask_login.login_user(user)
    return flask.redirect(flask.url_for("protected"))

@app.route("/protected")
@flask_login.login_required
def protected():
    return flask.render_template_string(
        "Logged in as: {{ user.id }}",
        user=flask_login.current_user
    )

@app.route("/logout")
def logout():
    flask_login.logout_user()
    return "Logged out"

评论

暂无评论