guns实验
任务一:导入并配置Guns框架
下载视频中提供的guns项目文件,用idea打开后修改对应的数据库文件信息
等待加载完毕后运行GunsApplication文件,结果运行失败,经网上查询后得到解决办法问在依赖文件中添加以下依赖后运行成功
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
运行成功截图
任务二:阅读Gans的源码并对每一部分的功能进行介绍
// 1. 获取当前请求的路径
String requestURI = request.getRequestURI();
requestURI = requestURI.replaceAll("/+", "/");
// 2. 不需要权限过滤的资源,直接放行
Boolean noneSecurityFlag = AntPathMatcherUtil.getAntMatchFLag(requestURI, request.getContextPath(), AuthConfigExpander.getNoneSecurityConfig());
if (noneSecurityFlag) {
return true;
}
// 3. 获取当前用户的token,可能为null
String token = null;
try {
token = LoginContext.me().getToken();
} catch (Exception e) {
// 不做处理,因为本接口可能是不需要鉴权
}
// 4. 如果token不为空,则先判断是否登录过期了,过期了就直接打回,不过期不做处理
if (StrUtil.isNotBlank(token)) {
try {
authServiceApi.validateToken(token);
} catch (AuthException authException) {
if (AuthExceptionEnum.AUTH_EXPIRED_ERROR.getErrorCode().equals(authException.getErrorCode())) {
sessionManagerApi.destroySessionCookie();
throw authException;
}
}
// 5. 刷新用户的session的过期时间
sessionManagerApi.refreshSession(token);
}
// 6. 获取ResourceDefinition,可能为null
ResourceUrlParam resourceUrlParam = new ResourceUrlParam();
resourceUrlParam.setUrl(requestURI);
ResourceDefinition resourceDefinition = resourceServiceApi.getResourceByUrl(resourceUrlParam);
// 7. 资源找不到,则当前url不被权限控制,直接放行
if (resourceDefinition == null) {
return true;
}
// 8.执行真正过滤器业务,如果拦截器执行不成功会抛出异常
this.filterAction(request, response, resourceDefinition, token);
return true;
}
任务三:基于Gans完成一个汽车信息管理系统
按照教程
执行sql语句
创建所需要的表如下
在项目中创建对应目录如下图
将代码粘贴到对应文件当中,执行GunsApplication运行成功
经测试增删改查功能可以正常使用
三、实验总结
本次实验由于教程十分详细全面,在实际执行过程中没有遇见太多的困难,使用十分顺利,经过这次实验感受到了极速开发框架的便利,为以后程序开发的学习开拓了一条全新视界。