模拟百度搜索词进入网站,网站安全建设方案步骤,小红书小程序入口,邯郸在哪个省1系统架构图 2 用例图
管理员角色的用例#xff1a;
文件分享大厅#xff1a;管理员可以访问文件分享大厅#xff0c;下载文件。个人信息管理#xff1a;管理员可以更新自己的个人信息#xff0c;修改密码。用户管理#xff1a;管理员负责创建、更新或删除用户账户
文件分享大厅管理员可以访问文件分享大厅下载文件。个人信息管理管理员可以更新自己的个人信息修改密码。用户管理管理员负责创建、更新或删除用户账户并分配权限导出用户信息。文件资源管理管理员对系统中所有文件资源有全面管理权限包括文件的加密、解密、更新、删除。文件分享管理管理员可以查看所有用户分享的文件监控分享文件可以对分享的文件进行删除修改。文件分享记录管理管理员可以查看所有文件分享的记录以确保跟踪和合规性。用户磁盘管理管理员有权管理用户磁盘空间的分配和使用情况。
用户角色的用例
文件分享大厅用户可以访问文件分享大厅浏览可分享的文件以及下载分享文件。文件资源管理用户可以管理自己上传的文件执行上传、加密、解密、删除等操作。文件分享管理用户可以查看自己分享的文件监控分享文件可以对分享的文件进行删除修改。 4.文件分享记录管理用户可以查看自己分享的文件记录被谁下载了。 3 功能模块实现
加密系统的功能模块实现需要考虑多个方面包括密码资源、密码服务、用户界面等。在实现过程中还要考虑系统的安全性、可靠性和易用性。[10]
3.1 文件分享大厅模块
文件分享大厅中展示了所有用户分享的文件。这个大厅是一个公开的平台任何人都可以在这里查看和下载他人分享的文件。提供了一个搜索功能可以通过输入文件名称或者分享人的名字来快速找到你需要的文件。当用户下载一个文件时是在下载一个加密后的版本。这样做的目的一方面是为了保护分享人的隐私防止他们的内容被未经授权的人使用。 关键代码 //查询文件分享表var items DbContext.QueryableFileInfoShare().WhereIF(input.InputPassword.IsNotNullOrNotWhiteSpace(), x x.InputPassword.Contains(input.InputPassword)).WhereIF(input.ShareLinks.IsNotNullOrNotWhiteSpace(), x x.ShareLinks.Contains(input.ShareLinks)).WhereIF(input.ValidityRange.HasItem(), x x.Validity input.ValidityRange[0] x.Validity input.ValidityRange[1]).WhereIF(input.IsInvalid.IsNotNullOrNotWhiteSpace(), x x.IsInvalid.Contains(input.IsInvalid)).WhereIF(input.IsOpen.IsNotNullOrNotWhiteSpace(), x x.IsOpen.Contains(input.IsOpen)).WhereIF(userIds.HasItem(), x userIds.Contains(x.ShareUserId.Value)).WhereIF(fileInfoIds.HasItem(), x fileInfoIds.Contains(x.FileInfoId.Value)).WhereIF(input.ShareUserId.HasValue, x x.ShareUserId input.ShareUserId).WhereIF(input.Id.HasValue, x x.Id input.Id).OrderByDescending(x x.CreationTime).SelectFileInfoShareDto().ToPageList(input.Page, input.Size, ref totalCount);
3.2 用户管理模块
用户管理模块支持搜索查询让用户能够快速找到他们需要的信息还支持新增用户。除此之外用户管理模块还支持删除功能这意味着如果某个用户不再需要使用我们的系统我们可以方便地将其从系统中移除。支持修改功能这意味着如果用户的信息发生了改变或者我们发现用户信息有误我们都可以及时进行修改确保系统中的用户信息始终是最新、最准确的。最后也支持用户信息导出。 关键代码 var items DbContext.QueryableAppUser().WhereIF(input.IsAuth, x x.CreatorId CurrentUser.GetUserId()).WhereIF(input.RoleType.HasValue, x x.RoleType input.RoleType.Value).WhereIF(input.UserName.IsNotNullOrNotWhiteSpace(), x x.UserName.Contains(input.UserName)).WhereIF(input.Name.IsNotNullOrNotWhiteSpace(), x x.Name.Contains(input.Name)).WhereIF(input.Email.IsNotNullOrNotWhiteSpace(), x x.Email.Contains(input.Email)).WhereIF(input.PhoneNumber.IsNotNullOrNotWhiteSpace(), x x.PhoneNumber.Contains(input.PhoneNumber)).SelectAppUserDto().ToPageList(input.Page, input.Size, ref totalCount);
3.3 文件加密解密模块
文件资源是提供用户进行加密解密的。在文件上传过程中我们会要求用户输入一个密码使用密码进行对一个文件进行AES加密。它会检查是否存在一个临时文件path .temp如果存在则删除。然后它会打开原始文件path并读取其内容。如果文件长度大于0它会创建一个新的临时文件path .temp并将加密后的内容写入该文件。在加密过程中它会更新进度条。最后它会删除原始文件并将临时文件重命名为原始文件名。
文件解密是对一个文件进行AES解密。会检查是否存在一个临时文件path .temp如果存在则删除。随后打开原始文件path并读取其内容。如果文件长度大于0它会创建一个新的临时文件path .temp并将解密后的内容写入该文件。在解密过程中它会更新进度条。最后它会删除原始文件并将临时文件重命名为原始文件名。
除了以上的存储和管理功能还提供了文件删除的功能。如果用户不再需要某个文件他们可以随时删除它释放存储空间。 关键代码 //查询用户所有的文件记录var files DbContext.QueryableFileResource().Where(x x.UserId userId).ToList();//得到用户的磁盘var diskDbContext.QueryableUserDisk().First(x x.UserId userId);var totalSize 0.0;foreach (var item in files){var url item.Url.Replace(\\, //);var fileName Path.GetFileName(url);var extension Path.GetExtension(url);try{// 使用FileStream将输入流写入文件using (WebClient client new WebClient()){using (Stream stream client.OpenRead(url)){long sizeInBytes stream.Length;double sizeInKb sizeInBytes / 1024.0;totalSize sizeInKb;}}}catch (Exception ex){ }}disk.UseSize totalSize;
3.4 文件分享模块
文件分享模块支持查看自己所有分享的文件记录在这个列表中我们可以看到文件的名称、有效期、是否公开等信息。还提供了对已分享文件进行管理的功能。我们可以对文件进行修改这样我们可以根据实际需求对文件进行整理使其更符合我们的要求。除了修改文件外我们还可以选择删除不再需要的已分享文件。在确认后文件将从我们的分享列表中移除。 关键代码
//获取一条文件分享记录
var entity DbContext.QueryableFileInfoShare().First(x x.Id input.Id);
//如果是空则代表新增
if (entity is null)
{input.Id 0;entity input.CloneFileInfoShareDto, FileInfoShare();entity DbContext.Insertable(entity).ExecuteReturnEntity();
}
else
{//否则代表修改entity input.CloneFileInfoShareDto, FileInfoShare();DbContext.Updateable(entity).ExecuteCommand();
}
return entity.CloneFileInfoShare, FileInfoShareDto();
3.5 文件分享记录模块
文件分享记录模块允许用户浏览到一个清晰的列表这个列表详细记录了每一个文件的下载情况。在这个列表中用户可以观察到文件的名称、下载的人以及每一次下载的详细信息。这些信息包括了下载者的身份即谁进行了下载以及下载行为发生的时间点这样就能够精确地知道在何时文件被何人访问。
对于那些拥有管理权限的用户来说文件分享记录模块还提供了额外的功能。例如如果某些记录不再需要或者出于隐私保护的目的需要删除管理员可以方便地对这些记录进行删除操作。 关键代码 //查询文件分享记录表var items DbContext.QueryableFileInfoShareRecord().WhereIF(input.InputNumber.IsNotNullOrNotWhiteSpace(), x x.InputNumber.Contains(input.InputNumber)).WhereIF(input.DownTimeRange.HasItem(), x x.DownTime input.DownTimeRange[0] x.DownTime input.DownTimeRange[1]).WhereIF(input.UserId.HasValue, x x.UserIdinput.UserId) .WhereIF(input.Id.HasValue, x x.Id input.Id).OrderByDescending(x x.CreationTime).SelectFileInfoShareRecordDto().ToPageList(input.Page, input.Size, ref totalCount);foreach (var item in items){item.CreatorAppUserDto DbContext.QueryableAppUser().Where(x x.Id item.CreatorId).SelectAppUserDto().ToList().FirstOrDefault() ?? new AppUserDto();item.FileInfoShareDto DbContext.QueryableFileInfoShare().Where(x x.Id item.FileInfoShareId).SelectFileInfoShareDto().ToList().FirstOrDefault() ?? new FileInfoShareDto();item.UserDto DbContext.QueryableAppUser().Where(x x.Id item.UserId).SelectAppUserDto().ToList().FirstOrDefault() ?? new AppUserDto();item.DownUserDto DbContext.QueryableAppUser().Where(x x.Id item.DownUserId).SelectAppUserDto().ToList().FirstOrDefault() ?? new AppUserDto();item.FileInfoDto DbContext.QueryableFileResource().Where(x x.Id item.FileInfoId).SelectFileResourceDto().ToList().FirstOrDefault() ?? new FileResourceDto();}
3.6 用户磁盘模块
管理员查看用户磁盘是一项关键的系统管理工作它涉及到对用户磁盘空间的监控和管理。管理员可以查看用户磁盘中存储的大小以及使用大小。 关键代码 //查询用户磁盘表var items DbContext.QueryableUserDisk().WhereIF(input.DiskSizeStartRange.HasValue, x x.DiskSizeinput.DiskSizeStartRange).WhereIF(input.DiskSizeEndRange.HasValue, x x.DiskSize input.DiskSizeEndRange).WhereIF(input.UseSizeStartRange.HasValue, x x.UseSizeinput.UseSizeStartRange).WhereIF(input.UseSizeEndRange.HasValue, x x.UseSize input.UseSizeEndRange).WhereIF(input.Id.HasValue, x x.Id input.Id).OrderByDescending(x x.CreationTime).SelectUserDiskDto().ToPageList(input.Page, input.Size,ref totalCount);