栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

个人在线学习网站(第七章 用户管理与单点登录)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

个人在线学习网站(第七章 用户管理与单点登录)

service中根据用户名查询

查询实体类UserQueryReq

保存实体类UserSaveReq加了一个长度校验,正则判断

用户名重复校验与自定义异常

新增用户时,增加用户名重复校验
在service中添加根据loginName查询的方法
 

public User selectByLoginName(String LoginName) {
        UserExample userExample = new UserExample();
        UserExample.Criteria criteria = userExample.createCriteria();
        criteria.andLoginNameEqualTo(LoginName);
        List userList = userMapper.selectByExample(userExample);
        if (CollectionUtils.isEmpty(userList)) {
            return null;
        } else {
            return userList.get(0);
        }
    }

在新增插入之前进行一次判断,如果查出来用户名为空,可以进行新增

校验重复时,抛出自定义异常
针对Exception应该打印整个堆栈信息,方便查问题

修改时,用户名不能修改  :disabled=“user.id”
在前端:disabled修改  如果user.id有值就disables,如果user.id没值,就不disabled

前端校验会有问题,在前端代码中加入!!

后端校验:后端永远不会更新loginname
 

            // 更新
            user.setLoginName(null);
            //加上selective表示user里面的属性有值,我才会去更新,没有值就不更新,前面设置loginName为空,表示永远不进行更新
            userMapper.updateByPrimaryKeySelective(user);

密码的两层加密处理

现在存到数据库中的密码是明文的,是非常危险的,我们应该把密码做一个MD5
是Spring内置的,不需要引入第三方的jar包,直接使用即可
 

request.setPassword(DigestUtils.md5DigestAsHex(request.getPassword().getBytes()));



在前端传输过程中容易被别人截取到

在前端也要做一层加密

盐值:原始字符串+拼接字符串,让原始字符串变得更复杂一点,让别人很难破解出来

两层加密:前端密码每次都拼上这个key,去做一个MD5,变成一个密文,这个密文再传到后端,后端再进行一次MD5加密.

增加重置密码功能

修改用户时,不能修改密码
前端隐藏 

      
        
      


后端 把密码清空,然后selective...
 

            user.setPassword(null);
            userMapper.updateByPrimaryKeySelective(user);
前端v-if与v-show区别:

都可以用来显示和隐藏元素

v-show只是简单的隐藏,不显示
v-if会将这个元素直接删掉

v-if 初始的时候,就判断好是隐藏还是显示
v-show 是动态变化的(新增时显示  编辑时隐藏)

单独开发重置密码表单和接口

修改Controller,重置密码实体类,改Service

登录

前端输入用户名密码
校验用户名密码
生成token
后端保存token(redis)
前端保存token

校验

前端请求时,带上token(放在header)
登录拦截器,校验token(到redis获取token)
校验成功则继续后面的业务
校验失败则回到登录页面

单点登录系统

淘宝 支付宝
A B C…
X:用户管理、登录、登录校验、退出登录

token与JWT

token+redis:token是无意义的
JWT:token是有意义的,加密的,包含业务信息,一般是用户信息,可以被解出来

登录标识:就是令牌,就是token,就是一串唯一的字符串

高频面试题

简单的说说单点登录的方案
token和JWT是什么?

NotNull  会检验null
NotEmpty会检验null和“”

登录功能开发 后端增加登录接口

后端输入+输出参数
登录Req:用户名+密码
返回Resp:整个用户信息(除密码)
密码提示越详细,透露的消息越多,越不安全。给一个模糊提示,密码规则不正确

在Controller中写登录接口,调用UserService中的login方法,返回User实体类

Service
根据用户名去查

前端增加登录模态框

一刷新就全部都没有了
vuex=全局响应式变量

如果没登录,跳到首页或跳到登录页面
要给拦截的路由加一个属性
meta:{  自定义属性
     loginRequire:true

高频面试题

    你们项目是否用过自定义异常,怎么用的?
    自定一个BusinessException异常,继承的是运行时异常RuntimeException,封装自定义属性参数(枚举类实现),在捕获异常时返回自定义的参数和描述

    你们项目的自定义异常是继承Exception还是RuntimeException?
    继承的是运行时异常RuntimeException
    Exception :受检查的异常,这种异常是强制我们catch或throw的异常。
    RuntimeException:运行时异常,这种异常我们不需要处理,完全由虚拟机接管。

    常用的加密算法有哪些?
    对称加密算法(AES、DES、3DES),加密和解密采用相同的密钥,是可逆的
    非对称加密算法(RSA、DSA、ECC)指加密和解密采用不同的密钥(公钥和私钥),因此非对称加密也叫公钥加密,是可逆的
    MD5:信息摘要算法5,单向的算法不可逆(被MD5加密的数据不能被解密)。MD5加密后的数据长度要比加密数据小的多,且长度固定,且加密后的串是唯一的。常用在不可还原的密码存储、信息完整性校验等。

    盐值有什么作用?
    用户注册时,系统用来和用户密码进行组合而生成的随机数值,称作salt值,通称为加盐值。为用户密码添加Salt值,使得加密的得到的密文更加冷僻,不宜查询。

    如何保证用户信息安全,比如数据库信息泄露了?
    两层加密处理:前端对用户输入的密码进行MD5+盐值加密,后端对结果再次进行MD5加密,

    简单的说说单点登录的方案
    单点登录的意思是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
    单点登录系统,所有需要登录的地方都调用该系统。一种方案是提供登录界面,登录完成后再跳转回原系统;另一种为只提供登录接口,不提供页面。

    token和JWT是什么?
    token+redis:token是无意义的随机字符串,保证唯一性就可以;
    JWT JSON Web Token 是加密的有意义的数据(用户信息)

    全局变量存储使用vuex和sessionStorage区别?
    vuex存储数据刷新页面之后就清空,sessionStorage是H5内置,键值对形式存储数据,保存在浏览器会话窗口上,在关闭窗口或标签页之后将会删除这些数据

    什么是vuex?(一句话说明vuex是做什么的)?
    vuex就是一个全局的响应式的变量,方便其他组件从中获取信息

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/735999.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号