混淆加密(md5+随机字符串):
String salt = RandomStringUtils.randomAlphanumeric(10);//获取一个10位的随机字符串System.out.println(salt); // 124ewfdsfdsdString pswd = "123"+salt;String saltPswd = DigestUtils.md5DigestAsHex(pswd.getBytes());System.out.println(saltPswd);//密文
常见的加密方式?
可逆加密算法: 加密后, 密文可以反向解密得到密码原文.
对称加密:文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥
非对称加密:两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密
不可逆加密算法:一旦加密就不能反向解密得到密码原文.
MD5密码加密
混淆加密(md5+随机字符串)
项目中是如何进行登录认证的?
如果用户访问需要登录才能访问的uri时,网关的过滤器会将请求进行拦截,判断用户请求头中是否携带token,若携带,则验证是否有效、是否被篡改。然后再放行。若没有携带,则跳转登录页面,让用户登录,密码是用MD5加salt处理,后端根据用户名查询到用户加密的密码,和前端用户输入的密码以同样方式加密后一致则登录成功,颁发token
什么是无状态登录?
有状态登录是基于cookie和session,当用户第一次请求时,服务器创建session存储用户信息,再将信息发送给浏览器,浏览器将信息已cookie的形式存储,用户下次请求会携带cookie,服务器将cookie中的数据和session中的数据对比。这种方式服务器会产生大量session,增加服务器压力
无状态登录:服务器不需要存储用户登录信息,用户第一次请求时,验证用户名和密码,成功颁发token,将用户登录信息保存到token中,前端将token保存到LocalStorage中,下次请求,用户请求头中会携带token,服务器解析token,判断是否有效即可
什么是JWT Token?
首先 JWT是一个开放的业界标准,它定义了一种简洁的格式,用于通信双方传递json对象。
jwt由头信息、载荷、签名组成。
头信息包括令牌的类型(即JWT)及使用的哈希算法(如HMAC、SHA256或RSA),
载荷:是存放有效信息的地方,它可以存放jwt提供的现成字段,比如:iss(签发者),exp(过期时间戳), sub(面向的用户)等,也可自定义字段。此部分不建议存放敏感信息,因为此部分可以解码还原原始内容。
签名:将头信息和载荷用base64编码后进行”.”拼接,再用密钥签名,形成第三部分
如何保证token令牌不被篡改?
token令牌能否保证数据安全?
不能,有被窃取的可能。所以重要信息不要存放在token中
请介绍下用户实名认证模块的业务流程?
Feign的作用?
实现服务与服务之间的调用,feign还集成了ribbon,当服务搭建了集群,还能实现负载均衡
Hystrix的作用?
当某个服务出现问题时,可以利用Hystrix实现熔断降级策略,来达到保护微服务的目的。
项目中Feign的具体使用?
实名认证功能中,当用户实名认证通过后,会通过feign调用自媒体服务中的根据app用户名查询当前app用户是否开通过自媒体用户方法,若没开通,则再通过feign调用自媒体服务中的创建自媒体账号方法。然后再通过feign调用根据自媒体用户id查询是否开通作者账号,若没开通则通过feign调用自媒体服务中的创建作者账号的方法。
