Django实现文件上传、文件列表查看、修改、限流和日志记录4
Django实现文件上传、文件列表查看、修改、限流和日志记录4
本章添加用户认证功能,属于安全模块。
用户认证
在Django中,默认情况下,用户的用户名和密码是存储在数据库中的。Django提供了内置的用户模型(User模型),它可以管理用户的认证和授权。
配置数据库
- 在file_upload/settings.py文件中,配置数据库连接信息,例如使用SQLite数据库:
# file_upload/settings.py # ... DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } # ...
添加用户和数据库表
#终端中运行以下命令来创建数据库表 python manage.py migrate #创建一个超级用户(管理员用户),用于登录和管理用户[admin 123456]: #按照提示输入用户名、电子邮件和密码。 python manage.py createsuperuser
配置登录视图和登出视图
- 在file_upload_app/views.py文件中,添加用户登录视图和注销视图:
from django.contrib.auth.decorators import login_required from django.contrib.auth import authenticate, login, logout from django.contrib import messages def user_login(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('upload') else: messages.error(request, '登录失败,请检查用户名和密码') return render(request, 'login.html') @login_required def user_logout(request): logout(request) return redirect('login')
添加映射
- 在file_upload/urls.py文件中,添加URL映射来调用用户登录和注销视图:
from django.urls import path from file_upload_app import views urlpatterns = [ ... path('login/', views.user_login, name='login'), path('logout/', views.user_logout, name='logout'), ... ]
引用登录验证
# 此处以登录验证模块为例
#上传视图
@login_required
def upload_file(request):
#代码逻辑 。。。
登录会话
在Django中,会话的过期时间可以通过配置会话设置来控制。默认情况下,会话的过期时间是两周(14天)。
可以在file_upload/settings.py文件中配置会话的过期时间
会话的过期时间是相对于用户最后一次活动的时间计算的。如果用户在过期时间内有活动,会话将被刷新并延长过期时间。如果用户在过期时间内没有活动,会话将在过期后自动注销。
# file_upload/settings.py # ... SESSION_COOKIE_AGE = 60 * 60 * 24 * 14 # 两周,单位为秒,即14天的秒数 # ... ## 希望在用户关闭浏览器后立即注销会话,可以将SESSION_EXPIRE_AT_BROWSER_CLOSE设置为True SESSION_EXPIRE_AT_BROWSER_CLOSE = True
运行服务
python manage.py runserver
访问验证
#访问上传文件 localhost:8000/upload/ #跳转登录验证 http://localhost:8000/login/?next=/upload/ #访问查看文件【修改文件--实时生效】 http://localhost:8000/view/cicd.sh/
使用之前创建的超级用户(管理员用户)的用户名和密码进行登录。登录后,只要会话有效,你就可以访问上传、查看和修改功能,直到注销或会话过期。