0322
熟悉jpa使用:定义dao查询接口XxxRepository,
继承JpaRepository<T, ID>接口,用来支持接口规范方法名查询
继承自定义的XxxRepositoryCustom接口,用来实现自定义的查询,使用JdbcTemplate实现
熟悉jdbc使用:NamedParameterJdbcTemplate。支持命名参数拼接sql语句,拼接完后的对象会委托给包装类JdbcTemplate,提供query及queryForXXX方法、update及batchUpdate方法。
BeanPropertyRowMapper。用于列的映射,通常使用,BeanPropertyRowMapper.newInstance(Clazz.class)创建一个一一映射的对象。
关于控制台输出sql:项目使用的log4j,在log4j2.xml修改level为debug即可
熟悉项目创建会话逻辑:调用createSession生成会话信息,中间经过校验,生成包括会话id、key、设备登录失败次数、设备状态,信息缓存redis且落库。返回sessionId
熟悉项目登录逻辑:请求参数需提供appid,获取登录用户信息,登录(检查当前会话是否存在,生成token落库),按端互踢,AccountKickUtils accountKickUtils.kickOthersAndCacheToken
关于多端互踢:①根据用户id获取redis缓存token②存在oldtoken,将删除redis的token,以及调用logout方法登出③添加newToken
了解OAuth2的token类型:BEARER,会去从redis和库中获取token值进行校验,传输透明易被复用,MAC,请求会被签名,包括nonce(理解为只使用一次的随机数)和其他信息,然后去进行mac计算校验
关于nonce:由客户端生成,用于使请求唯一,防止恶意客户端重放攻击 存放在redis上每次请求进行check