1.常见的加密方式
1.可逆加密:一旦加密可以解密得到原文
1.1.对称加密:文件加密解密使用同一把密钥 如:AES、HS256
1.2.非对称加密:有两把密钥。公钥加密,私钥解密;私钥加密,公钥解密
如:RSA、RSA2 2.不可逆加密:一旦加密不可解密得到原文 如:MD5、SHA
2.无状态登录
有状态登录:服务端保存用户信息,一般用session保存
无状态登录:服务端不保存用户信息,使用JWT令牌,浏览器保存token,服务端通过解析token得到用户信息。
3.JWT Token
JWT Token一般使用在ajax跨域身份认证。 JWT令牌一般由三个部分组成:
1.Header :定义令牌类型和加密算法
2.Payload:一般存储不敏感的数据,如签发者、过期时间戳等,如果要存储敏感信息需要加密
3.Signature:由前两部分编码后进行签名算法获得。它的作用是防止jtw内容被篡改。
4.如何保证token令牌不被篡改?
签名机制保证了数据不会被篡改。
用户会携带token发起请求,服务端会通过对token进行验证从而保证token令牌不被篡改。
5.项目中是如何进行登录认证的?
1.用户的所有请求经过网关被全局过滤器拦截
2.过滤器判断请求是否需要拦截
3.如果不需要拦截,直接放行,比如用户登录就不要拦截
4.需要拦截,判断是否拥有访问权限
5.我们使用的是JWT令牌来做身份认证的,通过对token进行验证来判断用户是否有访问权限。
6.当用户登录成功后,服务端会给用户颁发一个token,让用户保存,当用户再次请求会携带token经过网关, 此时通过解析token,判断用户是否有访权限。
6.请介绍下用户实名认证模块的业务流程?
1.用户在App端提交身份实名认证
2.平台管理端对用户提交的申请进行审核,其中包括身份审核,需要对接公安系统进行身份校验
3.实名认证通过,为用户创建一个自媒体账户,并添加用户作者信息。
7.Feign的作用
Fegin是一个声明式http客户端,声明即可用,实现http的请求的发送,方便微服务之间进行调用。
8.项目中Feign的具体使用?
1.导入openfeign依赖
2.编写Feign客户端,定义微服务访问接口 加@FeignClien注解
3.编写微服务熔断降级逻辑
4.编写Feign配置类,将Feign客户端和熔断降级业务加入到Spring容器中
3.通过SpringBoot的自动配置将配置类加载到Spring容器中
9.Hystrix的作用
熔断和服务降级。可以对微服务进行保护,避免在进行微服务调用时,由于某个微服务出现故障,从而造成所有微服务不可以 解决雪崩方法:
1.超时处理:请求超过一定时间,立即请求失败
2.线程隔离:限定每个业务使用的线程数,防止耗尽整个tomcat资源
3.熔断降级:某个微服务请求失败到达一定比例,熔断该服务,拦截该服务的所有请求,快速失败,接着走失败降级逻辑。
4.限流:避免服务因突发的流量而发生故障
10.事务回滚时机
当出现RuntimeException异常时才会出现事务回滚 扩大事务失败回滚范围: @Transactional(rollbackFor = Exception.class)
