• 基于阿里云oss的文件管理系统


    登录模块

    登录逻辑:

    通过username+password+邮箱验证码登录:

    1. 验证前端邮箱code是否等于redis中的邮箱code。
    2. 验证数据库中是否存在该用户。

    注册逻辑:

    通过

    {
        "username": "3455243515@qq.com",
        "password": "123456",
        "nickname": "小号",
        "avatar": "可以为空的头像url",
        "verifyCode":"邮箱验证码"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注册,通过qq邮箱发送邮箱验证码,在通过上面的json传给后端验证一下。

    redis:

    图片验证码形式 = uid(用户标识):“fasdf2”(图片验证码)

    邮箱验证码形式 = 599426945@qq.com(邮箱):“8B6eNm”(邮箱验证码)

    jwt存储形式 = eyiJ9.eH0.W3(token字符串):“1”(uid号码)

    (本系统中jwt的过期时间是和redis中字段过期时间是设定为一致的)

    现在有点迷惑,就是可能uid(用户标识)是前端生成的,用来生成图片验证码

    登录拦截:

    通过携带的Bearer Token,得到jwt中的用户id,需要鉴权就可以通过这里开始了。比如本系统正在用的鉴权就是通过:

    //进行简单的鉴权
    String uri = request.getRequestURI();
    if (uri.contains(StringEnum.ADMIN_INTERFACES.getValue())) {// 如果uri中包含admin字样,说明改访问路径必须要鉴权。
        checkIdentity(Long.parseLong(userId));
    }
    
    
    //查看用户是不是admin的方法。
    private void checkIdentity(Long userId) {
        UserVO userVO = userService.queryUserById(userId);
        if (!userVO.getIdentity().equals(IdentityEnum.ADMIN.getIdentity())) {
            throw new AppException("权限不足,你没有该权限");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    文件管理模块

    本模块原来的代码是用的阿里云oss,所以或多或少和普通的文件夹有点不一样。但是可以尝试弄一下。

    todo迷惑的地方:@Validated //多少还是有点迷惑@Validated有啥子用。

    接口测试:

    接口①-文件上传:

    未带参数path的:

    image-20220929211832622

    oss上的结果:

    image-20220929211251414

    带有参数path的:

    image-20220929211802085

    oss结果:

    image-20220929211728441

    值得一提的是,这里的用户1,在阿里云oss中以一个文件夹的形式存在。

    接口②-单个文件查询:

    image-20221001220414470

    接口③-文件夹下文件列表查询:

    image-20221001220349524

    接口④-删除文件or文件夹:

    非永久性删除,是进回收站。

    删除单个文件,直接输入文件名字:

    image-20221001220445449

    删除文件夹,直接输入文件夹名字:

    image-20221001220552273

    值得注意的是:

    image-20221001220152410

    接口⑤-新建文件夹:

    新建一个空文件夹。

    image-20221001220812109

    接口⑥-移动文件夹:

    初始目录有以下文件:image-20221001221246429

    访问接口,执行操作:

    image-20221001221517332

    移动后的结果:

    image-20221001221551600

    接口⑦-移动文件:

    同理移动文件:

    image-20221001221905342

    接口⑧-复制文件or文件夹:

    image-20221001222436418

    image-20221001222453720

    接口⑨-修改文件名字:

    其实就是移动一样!

    image-20221001223043876

    结果:

    image-20221001223128697

    接口⑩-修改文件夹名字:

    其实就是移动一样!

    image-20221001223426238

    image-20221001223432572

    接口①①-未完待续:

    还有一些从garbage中查询删除的操作。

    未完待续。。。

    一些bug和解决方案:

    1. 在调用查询单个文件信息和文件列表等接口是出现:

    访问STS服务获取临时凭证失败,失败原因:You are not authorized to do this action. You should be authorized by RAM.or

    STS中临时授权访问OSS资源时出现“You are not authorized to do this action. You should be authorized by RAM“报错 (aliyun.com),给对应ram用户创建对应的角色,同时将rolearn字符串赋值到代码中去如下。

    1. 报错:the parameter rolearn is wrongly formed解决方案是:

    image-20221001213335816

    代码仓库地址:

    ladidol/clouds_disk (github.com)

    apifox的接口文档:

    链接: https://www.apifox.cn/apidoc/shared-63277f51-68fc-4684-bef2-3dbf3e495295 访问密码 : 0LAiFM80

  • 相关阅读:
    HCTL-2016, HCTL-2017 AB Decoder
    结构伪类选择器
    冰蝎、蚁剑和哥斯拉
    flask项目起步(1)
    【软考】设计模式之组合模式
    使用vscode创建vue项目实践操作
    基于stm32的shell实现
    科普文章|一文了解平行链及其优势
    Golang net/http 包中的 RoundTripper 接口详解
    Laravel文档阅读笔记-Custom Authentication Login And Registration Using Laravel 8
  • 原文地址:https://blog.csdn.net/qq_51705526/article/details/127138441