使用转发和重定向跳转页面,实现微博登录功能,验证通过进入首页,验证失败跳转到登录页面 长时间不登陆显示用户长时间未操作请重新登录 代码应该怎么写
时间: 2024-03-28 15:41:20 浏览: 20
首先,在登录页面上,你需要设置一个表单,用户可以输入他们的用户名和密码。
当用户提交表单时,应该将数据发送到后端进行验证。如果验证成功,则应该将用户重定向到主页,否则应该将用户重定向回登录页面。
实现代码如下(使用 Flask 框架):
```python
from flask import Flask, redirect, request
app = Flask(__name__)
# 假设以下数据为注册用户
users = [
{'username': 'user1', 'password': 'password1'},
{'username': 'user2', 'password': 'password2'},
{'username': 'user3', 'password': 'password3'},
]
# 设定一个字典,用于存储用户最后一次活动的时间
last_active_time = {}
@app.route('/')
def index():
# 获取用户的用户名
username = request.args.get('username')
# 如果用户已经登录,就显示主页
if username and username in last_active_time:
return f'Welcome back, {username}!'
# 如果用户没有登录,就显示登录页面
return '''
<form method="post" action="/login">
<input type="text" name="username" placeholder="Username"><br>
<input type="password" name="password" placeholder="Password"><br>
<input type="submit" value="Log in">
</form>
'''
@app.route('/login', methods=['POST'])
def login():
# 从表单中获取用户名和密码
username = request.form['username']
password = request.form['password']
# 验证用户名和密码是否正确
for user in users:
if user['username'] == username and user['password'] == password:
# 如果验证通过,就将用户的最后一次活动时间设置为当前时间
last_active_time[username] = datetime.now()
# 并重定向到主页
return redirect(f'/?username={username}')
# 如果验证失败,就重定向回登录页面
return redirect('/')
@app.before_request
def check_last_active_time():
# 获取用户的用户名
username = request.args.get('username')
# 如果用户已经登录,检查他们最后一次活动的时间
if username and username in last_active_time:
last_active = last_active_time[username]
now = datetime.now()
# 如果用户长时间未操作,则重定向回登录页面
if (now - last_active).total_seconds() > 3600:
return redirect('/')
# 否则,更新用户的最后一次活动时间
else:
last_active_time[username] = now
if __name__ == '__main__':
app.run(debug=True)
```
在上面的代码中,我们使用 `last_active_time` 字典来存储每个用户最后一次活动的时间。在 `index` 视图函数中,我们检查用户是否已经登录,如果是,就显示主页,否则就显示登录表单。
在 `login` 视图函数中,我们从表单中获取用户名和密码,然后验证它们是否正确。如果验证通过,就将用户的最后一次活动时间设置为当前时间,并重定向到主页。如果验证失败,就重定向回登录页面。
在 `before_request` 钩子函数中,我们检查用户的最后一次活动时间。如果用户已经登录,但是长时间未操作,则重定向回登录页面。否则,更新用户的最后一次活动时间。