linux - 使用 Linux 系统凭据登录 Flask

标签 linux flask flask-login

我正在使用 Flask 创建一个简单的 Web 应用程序。我将把它托管在我的 Linux 服务器上。

网络应用程序执行多个用户特定的事情。就像在 Users home 中列出目录一样,为用户添加 ssh-keys 之类的东西。

我想知道有没有办法让flask打开登录页面,并根据系统用户名和密码验证用户名和密码。 (即用户系统凭据)。如果是,那么如何。如果不能,我还能做什么?

最佳答案

使用 ’ simplepam你可以在 linux 上对 PAM 系统进行身份验证的 python 包。这是 flask basic example我已将其修改为使用 simplepam:

from flask import Flask, session, redirect, url_for, escape, request
from simplepam import authenticate


app = Flask(__name__)

@app.route('/')
def index():
    if 'username' in session:
        return 'Logged in as %s' % escape(session['username'])
    return 'You are not logged in'

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        if authenticate(str(username), str(password)):
            session['username'] = request.form['username']
            return redirect(url_for('index'))
        else:
            return 'Invalid username/password'
    return '''
        <form action="" method="post">
            <p><input type=text name=username>
            <p><input type=password name=password>
            <p><input type=submit value=Login>
        </form>
    '''

@app.route('/logout')
def logout():
    # remove the username from the session if it's there
    session.pop('username', None)
    return redirect(url_for('index'))

# set the secret key.  keep this really secret:
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'

if __name__ == '__main__':
    app.run(debug='True')

关于linux - 使用 Linux 系统凭据登录 Flask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26313894/

相关文章:

python - Heroku 应用程序在推送小更改后崩溃。非常困惑

flask - Flask-Login 是否支持角色?

database - 与谷歌应用程序引擎兼容的简单网络应用程序

python - 在 Flask 路由中使用变量

java - bluecove 是否适用于 Linux 64 位?

mysql - 如何使用 sql-alchemy 从 Flask 应用程序连接到 mysql docker 容器

python - 在 Python Flask 中,如何获取当前登录用户的角色名称?

python - 如何使 Flask-OpenID 对象成为应用程序的全局对象?

c - 当接口(interface)有 >1 个 IPv6 地址时 Linux IPv6 源地址选择 : How to deprecate one?

c++ - 在删除文件之前检查文件是否仍在被另一个进程使用(c、c++、linux)