写一个cookie与session实现登录的代码
时间: 2024-06-10 16:03:57 浏览: 11
好的,请问您是想使用哪种编程语言呢?以下是一份Python的示例代码:
```
import hashlib
import uuid
import time
# 模拟数据库中保存的用户信息
users = {'testuser': '123456'}
# 定义一个用于生成随机字符串的函数
def generate_token():
return str(uuid.uuid4())
# 定义一个用于计算密码哈希值的函数
def calculate_hash(password):
sha256 = hashlib.sha256()
sha256.update(password.encode('utf-8'))
return sha256.hexdigest()
# 登录处理函数
def login(username, password):
if username in users and users.get(username) == calculate_hash(password):
token = generate_token()
# 将token保存到session中,并设置过期时间为1小时后
session = {'token': token, 'expire_at': time.time() + 3600}
# 保存session,并将session的id设置为cookie
# 注意:这里需要将session id进行加密以防篡改
set_cookie('session_id', encrypt(str(session)))
return True
else:
return False
# 校验用户是否已登录的中间件
def auth_middleware(request):
# 获取session id,并解密获取session内容
session_id = decrypt(request.cookies.get('session_id'))
session = ast.literal_eval(session_id)
# 判断session是否过期
if session.get('expire_at', 0) > time.time():
request.session = session
return True
else:
return False
```
上述代码中,login函数用于实现用户登录功能,输入用户名和密码后,如果校验通过,则生成一个token,并将token保存到session中。接着,将session的内容加密,将加密后的内容保存到cookie中,供后续验证使用。
auth_middleware函数则是一个中间件,用于校验用户是否已登录。在请求处理过程中,通过获取cookie中的session id,并解密获取session内容,判断session是否存在以及是否过期来确定用户是否已经登录。