首页 > 其他分享 >网盘项目注册以及登录功能的实验

网盘项目注册以及登录功能的实验

时间:2024-05-24 22:51:09浏览次数:22  
标签:return 手机号 登录 网盘 密码 user 注册 RestResult String

注册功能的实现

思路:用户输入用户名,手机号,密码作为登录所用的数据,后端检验用户名,密码,手机号的合法性,
并且后端可以通过手机号唯一的特性来验证该手机号是否已被注册过,若被注册过,则返回错误信息,
否则,使用UUID生成盐值来对密码进行加盐处理,然后再使用md5对密码进行加密(加盐值的好处就是
即使md5加密的密码被破解,破解者也无法得到用户的真实密码),最后将用户插入到user表中。
具体代码:

    public RestResult registerUser(User user) {
        //判断手机号,密码,用户名是否有效
        String userName = user.getUserName();
        String telephone = user.getTelephone();
        String password = user.getPassword();
        if (!StringUtils.hasLength(userName) || !StringUtils.hasLength(telephone) || !StringUtils.hasLength(password)) {
            return RestResult.fail().message("用户名或手机号或密码不能为空!");
        }
        //判断该手机号是否已注册过
        if (isTelephoneExit(telephone)) {
            return RestResult.fail().message("手机号已被注册过");
        }
        //注册该用户,密码加盐处理,并使用md5加密存储
        //生成密码盐值
        String salt = UUID.randomUUID().toString().replace("-", "")
                .substring(15);
        //密码加盐处理
        user.setSalt(salt);
        user.setPassword(password + salt);
        //md5加密
        String newPassword = DigestUtils.md5DigestAsHex(user.getPassword().getBytes());
        user.setPassword(newPassword);
        //设置注册时间
        user.setRegisterTime(DateUtil.getCurrentTime());
        //插入到数据库中
        boolean cnt = save(user);
        if (cnt) {
            return RestResult.success();
        }
        return RestResult.fail().message("注册失败,请检查输入信息");
    }

登录功能实现

思路:用户在前端输入手机号和密码,后端接收到后进行验证,首先,通过手机号查询用户,若查询不到,则说明该手机号尚未注册,返回错误信息,
若查询到用户,则进行密码比较,需对传过来的密码先加盐,再使用md5加密,最后再校验,若密码校验通过,则创建一个twt用作以后用户请求
校验他已经登陆过的一个依据。
具体代码:

    public RestResult<User> login(User user) {
        //根据手机号查询用户
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getTelephone, user.getTelephone());
        User user1 = getOne(queryWrapper);
        if (user1 == null) {
            return RestResult.fail().message("请先注册!");
        }
        //判断密码是否一致
        String password = user.getPassword();
        password += user1.getSalt();
        String newPassword = DigestUtils.md5DigestAsHex(password.getBytes());
        if (!newPassword.equals(user1.getPassword())) {
            return RestResult.fail().message("密码错误!");
        }
        user1.setSalt("");
        user1.setPassword("");
        return RestResult.success().data(user1);
    }
    //判断手机号是否已在user表中存在
    public boolean isTelephoneExit(String telephone) {
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getTelephone, telephone);
        User user = getOne(queryWrapper);
        return null != user;
    }

标签:return,手机号,登录,网盘,密码,user,注册,RestResult,String
From: https://www.cnblogs.com/ydw333/p/18211799

相关文章

  • 微服务:构建Spring Boot与Dubbo集成:以Nacos为注册中心
    一、前言  Dubbo是阿里巴巴公司开源的一个高性能、轻量级的JavaRPC框架,用于构建分布式服务架构。Dubbo提供了三大核心能力:面向接口的远程方法调用、智能容错和负载均衡,以及服务自动注册和发现。二、Dubbo的特点  面向接口代理的高性能RPC调用:提供高性能的基于代理的......
  • 配置freepbx asterisk sip nat 实现外部分机注册
    映射5160tcpudp映射10000-20000 可修改范围创建传统分机或在高级内转换为chan_sip配置sip  分机NAT如下 配置asterisksip全局nat设置外部内部ip   静态设置选择后(已经有外部ip) 动态在全局留空外部ip后设置动态主机域名(未测试)    ......
  • Linux系统postdrop服务进程持续增加导致无法登录
    临时解决方案:#servicepostfixstatus#servicesendmailstatus#servicepostfixstop[root@wign~]#ps-ef|grepsendmail|wc-l3038[root@wign~]#ps-ef|greppostdrop|wc-l3162停止postdrop服务,杀掉postdrop的进程#psaux|greppostdrop|grep-vgrep|cut-c9-15|xargs......
  • 新版本的禅道在使用 nginx 做 https 反向代理时,无法正常安装、升级以及登录
    是想从docker的12.5.3版本升级到16.0版本,但是按步骤升级完成后,发现会卡在一个“禅道开源版15版本升级”的介绍页面无限循环直接部署全新的系统,也会卡在配置数据库连接的页面无限循环而且在容器的日志中,会有一条ERROR1045(28000):Accessdeniedforuser'root'@'loca......
  • Nacos注册中心
    Nacos是springcloud的扩展,注册中心功能通过NacosDiscoveryClient继承DiscoveryClient,在springcloud中,与Eureka可以无侵入的切换。注册中心可以手动剔除服务实例,通过消息通知客户端更新缓存的实例信息,完整调用链路示例如下:Nacos的关键特性包括:服务发现和服务健康监测动......
  • Eureka 服务注册中心
    注册中心相当于微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到注册中心,当服务需要调用其他服务时,就到这里找到服务的地址,进行调用。服务注册中心的作用就是服务的注册和服务的发现。常见注册中心的对比Eureka注册中心三种角色......
  • uniapp中登录提交密码时用base64加密
    1.在项目文件夹里面的地址栏中输入npm后回车2.在弹出来的管理员界面输入npminstallbase-64后回车3.在需要使用的页面引入importBase64from'base-64';4.提交时转换成base64后提交consten=Base64.encode(password)解密方法constde=Base64.decode(en)......
  • 使用winsw 将 spring boot jar包注册称服务
    下载地址:ReleaseWinSWv2.10.3·winsw/winsw·GitHub下载winsw,使用版本WinSWv2.10.3版修改文件名  修改配置<configuration><!--安装成Windows服务后的服务名--><id>nacosConsumer</id><!--显示的服务名称--><name>nacosConsumer</name>&......
  • Asp-Net-Core开发笔记:给SwaggerUI加上登录保护功能
    前言#在SwaggerUI中加入登录验证,是我很早前就做过的,不过之前的做法总感觉有点硬编码,最近.Net8增加了一个新特性:调用MapSwagger().RequireAuthorization来保护SwaggerUI,但官方的这个功能又像半成品一样,只能使用postmancurl之类的工具带上Authorizationheader来请......
  • 关于Linux OpenSSH登录的问题
    OpenSSH由7.6升级到8.2和9.0之后用密码登录登不上去了,提供以下思路:1、7.6之前的版本SSH启动路径为/usr/local/sbin/sshd,7.6之后的版本启动路径为/usr/sbin/sshd,控制启动文件为vi/etc/rc.d/init.d/sshd 2、检查SSH服务的配置文件 /etc/ssh/sshd_config。确保没有设置 Passwo......