返回顶部

Django实现文件上传、文件列表查看、修改、限流和日志记录4

Django实现文件上传、文件列表查看、修改、限流和日志记录4

本章添加用户认证功能,属于安全模块。

用户认证

在Django中,默认情况下,用户的用户名和密码是存储在数据库中的。Django提供了内置的用户模型(User模型),它可以管理用户的认证和授权。

配置数据库

  1. 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

配置登录视图和登出视图

  1. 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')

添加映射

  1. 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/

 

使用之前创建的超级用户(管理员用户)的用户名和密码进行登录。登录后,只要会话有效,你就可以访问上传、查看和修改功能,直到注销或会话过期。

 

 

 

 

 

posted @ 2023-08-13 16:44  九尾cat  阅读(77)  评论(0编辑  收藏  举报