欢迎访问宙启技术站
智能推送

Python中基于session的用户登录实现

发布时间:2024-01-16 18:14:10

在Python中,可以使用Flask来实现基于session的用户登录。Flask是一个轻量级的Web框架,提供了简单而易用的工具来构建Web应用程序。

首先,需要安装Flask。可以使用以下命令来安装Flask:

pip install Flask

接下来,创建一个名为app.py的文件,并在其中写入以下代码:

from flask import Flask, render_template, request, session, redirect, url_for

app = Flask(__name__)
app.secret_key = 'secretkey'  # 设置一个密钥用于session加密


@app.route('/')
def home():
    if 'username' in session:
        return '已登录'
    else:
        return '未登录'


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        # 获取表单数据
        username = request.form['username']
        password = request.form['password']
    
        # 验证用户名和密码是否正确
        if username == 'admin' and password == 'password':
            # 登录成功,将用户名保存在session中
            session['username'] = username
            return redirect(url_for('home'))  # 重定向到主页
        else:
            return '用户名或密码错误'
    
    return render_template('login.html')


@app.route('/logout')
def logout():
    session.pop('username', None)  # 从session中移除用户名
    return redirect(url_for('home'))  # 重定向到主页


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

在上面的代码中,我们创建了一个Flask应用程序,并设置了一个密钥用于session加密。接下来,我们定义了两个路由://login

/路由用于显示当前的登录状态。如果username存在于session中,则表示已登录;否则,表示未登录。

/login路由用于处理用户登录请求。当接收到POST请求时,我们从表单中获取用户名和密码,并验证其是否正确。如果登录成功,我们将用户名保存在session中,并重定向到主页。否则,返回一个错误消息。

我们还创建了一个/logout路由,用于实现用户退出登录功能。当接收到GET请求时,我们将用户名从session中移除,并重定向到主页。

最后,在运行app.py之前,我们需要创建一个名为login.html的模版文件,用于提供登录界面。它的内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h2>Login</h2>
    <form action="/login" method="post">
        <input type="text" name="username" placeholder="Username" required><br>
        <input type="password" name="password" placeholder="Password" required><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>

在模版中,我们创建了一个登录表单,用户需要输入用户名和密码来进行登录。

现在,我们可以运行app.py并访问http://localhost:5000来查看效果。当访问主页时,由于尚未登录,则会显示"未登录"。点击登录链接,输入正确的用户名和密码后,我们将被重定向到主页,并显示"已登录"。点击退出登录链接后,我们将再次被重定向到主页,并显示"未登录"。

这就是一个简单的基于session的用户登录实现的例子。这种方法可以用于许多Web应用程序中,以确保用户只能访问授权的内容。