统一身份认证系统




张教授: 小李,最近学院需要一套新的身份认证系统来管理师生的信息。你觉得应该怎么做?
小李: 教授,我们可以使用Python编写一个基于JWT(JSON Web Token)的统一身份认证系统。这样可以确保数据的安全性和用户的权限管理。
张教授: 好主意!那具体怎么操作呢?
小李: 首先,我们需要安装`PyJWT`库。然后,我可以展示一下基本的登录流程。
import jwt
import datetime
# 密钥
SECRET_KEY = 'mysecretkey'
# 生成Token
def generate_token(user_id):
payload = {
'user_id': user_id,
'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1)
}
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
return token
# 示例调用
token = generate_token(12345)
print("Generated Token:", token)
张教授: 这个看起来不错。那么,如何验证这个Token呢?
小李: 我们可以创建一个验证函数来检查Token的有效性。
# 验证Token
def verify_token(token):
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
return payload
except jwt.ExpiredSignatureError:
return "Token expired"
except jwt.InvalidTokenError:
return "Invalid token"
# 示例调用
payload = verify_token(token)
print("Token Payload:", payload)
张教授: 很好!现在我们有了一个简单的身份认证系统。接下来,我们如何将其应用到学院管理中?
小李: 我们可以在每个API请求中加入JWT验证。例如,当用户访问课程信息时,服务器会检查Token是否有效。
张教授: 明白了,这将确保只有授权用户才能访问敏感信息。
小李: 是的,同时我们还可以根据用户的角色设置不同的权限,比如教师只能查看课程信息,而管理员可以添加或删除课程。
张教授: 非常感谢你的详细解释,小李。我相信这套系统能够很好地满足我们的需求。
]]>