jackson工具使用
@JsonIgnoreProperties、@JsonIgnore、@JsonInclude、@JsonSerializable
项目测试模块
JUnit是一个Java语言的单元测试框架。
public class TestJunit {
@Before//执行每个@Test前调用
public void init() {
System.out.println("-----@Before----"); }
@After//执行每个@Test后调用
public void destroy() {
System.out.println("-----@After----"); }
@Test
public void test1() {
System.out.println("测试逻辑1"); }
@Test
public void test2() {
String s = null;
s.length();
System.out.println("测试逻辑2"); } }
Spring Test模块
SpringTest模块是在junit4基础上封装的Spring容器组件测试功能。可以将容器中的组件注入到测试类,然后测试对象功能。
@RunWith(SpringRunner.class)//启动junit的@Test方法,启动前需要实例化Spring容器,并容器中的Bean对象注入
@SpringBootTest(classes= {RunUserBoot.class})
public class SpringTest {
@Autowired
private UserMapper userDao;
@Test
public void testRegist1() {
User user = userDao.selectByName("paopao");
System.out.println(user); } }
Spring MVC Test测试
SpringTest提供了一个MockMvc对象,可以发送请求接收响应处理结果。
@RunWith(SpringRunner.class)
@SpringBootTest(classes= {RunUserBoot.class})
public class HttpSpringTest {
@Autowired
private UserController controller;
//测试注册
@Test//发送post请求/user/regist,还得传递name和password参数
public void test1() throws Exception {
MockMvc mock = MockMvcBuilders.standaloneSetup(controller).build();//可以发送请求,接收响应
RequestBuilder registRequest = MockMvcRequestBuilders.post("/user/regist");//创建一个post请求/user/regist
MvcResult result = mock.perform(registRequest).andReturn();//发送请求调用
String content = result.getResponse().getContentAsString();//获取响应结果
System.out.println(content); } }
用户登录服务
1.用户名和密码比对
用户名和密码同时比对
先比对用户名、用户名正确再比对密码(用户名唯一性)
2.用户登录信息状态保存
采用Session保存(单体架构应用)
采用Session保存,解决Session共享问题(单体集群架构+追加些xml配置)
采用redis或db保存,给用户颁发令牌(分布式架构应用)
JWT标准的Token
Json Web Token,基于json格式信息一种token令牌。
JWT token 包含三部分,第一部分header、第二部分payload、第三部分签证
第一部分
{ typ: jwt, alg: HS256 }
利用base64算法处理json信息,作为token第一部分
第二部分
{ iss: xdl, aud: xxx,iat:xxx,exp:xxx,uid:xxx,name:xxx }
利用base64算法处理json信息,作为token第二部分
第三部分
将“第一部分.第二部分”然后调用header中指定的alg算法HS256进行加密处理。(需要一个secret秘钥,不对外公开),作为第三部分结果
例如JWT token
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJVc2VySWQiOjEyMywiVXNlck5hbWUiOiJhZG1pbiJ9.Qjw1epD5P6p4Yy2yju3-fkq28PddznqRj3ESfALQy_U
Java-JWT工具包
java-jwt工具包提供了jwt算法的封装。
<dependencies>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.8.0</version>
</dependency>
</dependencies>
SSO单点登录
Single sign On单点登录,实现结构如下:
实现要点:
1.需要将登录、注册、令牌检测功能独立做成一个系统,认证系统。
2.认证系统检测用户登录成功,返回一个令牌(标识合法登录用户)
3.方法其他应用系统时,如果需要登录身份,请求携带登录令牌即可,其他应用系统会拦截令牌,发送给认证系统进行合法性检查,最后根据返回检测结果决定是否允许继续调用应用系统功能。
如何在实现类中调用第三方接口加载信息
RestTemplate服务间调用
1.使用@Bean在启动类中定义RestTemplate对象
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();}
2.注入RestTemplate发Rest请求调用其他服务
restTemplate.get()、restTemplate.post()、restTemplate.put()、restTemplate.delete()
工程之间跳转跨域名需要写上完整地址