# SpringBoot **Repository Path**: inspurScJackTeam/SpringBoot ## Basic Information - **Project Name**: SpringBoot - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-08-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SpringBoot #### 项目介绍 主要使用了Spring Boot + Spring Data jpa +Spring securyt +thymeleaf java框架进行开发。 #### 软件架构 软件架构说明 前端UI界面使用admin lte,主要使用了bootstrap 3,jquery 3,jquery datatables 等js框架 #### 使用说明 管理员:admin 密码:123 #1. jquery datatables 参考 https://www.datatables.net/ http://www.datatables.club/ ###代码示例: ``` $(document).ready( function () { $('#myTable').DataTable(); } ); ``` ###基本配置如下: ``` $('#userTable').DataTable({ serverSide:true,是否开启服务器模式 paginate:true,//是否打开分页 processing:true,是否显示处理状态 ordering:false, autoWidth:true, //中文语言配置 language: { "sProcessing": "处理中...", "sLengthMenu": "显示 _MENU_ 项结果", "sZeroRecords": "没有匹配结果", "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", "sInfoFiltered": "(由 _MAX_ 项结果过滤)", "sInfoPostFix": "", "sSearch": "搜索:", "sUrl": "", "sEmptyTable": "表中数据为空", "sLoadingRecords": "载入中...", "sInfoThousands": ",", "oPaginate": { "sFirst": "首页", "sPrevious": "上页", "sNext": "下页", "sLast": "末页" }, "oAria": { "sSortAscending": ": 以升序排列此列", "sSortDescending": ": 以降序排列此列" } }, //排序设置 order: [[1, 'asc']], //条数选择设置 lengthMenu: [ [5, 10, 15, 20], [5, 10, 15, 20] // change per page values here ], //默认显示条数 pageLength: 5, //数据绑定设置 columns:[{ data:"id", visible:false },{ data:"username", title:"用户名" },{ data:"sex", title:"性别" },{ data:"phone", title:"电话" },{ data:"idCard", title:"身份证" },{ data:"address", title:"地址" },{ data:"status", title:"状态", render:function (data) { if(data.status ==0){ return '禁用' }else{ return '启用' } } },{ data:"description", title:"描述" },{ data: null, title:'操作', width:'15%' }], //ajax请求设置 ajax: { url:"/api/user/findByUsernameLike", type:"post", //参数设置 data:function (dataSet) { var param = {}; param.draw = dataSet.draw; param.start = dataSet.start; param.length = dataSet.length; param.search=dataSet.search.value; return param; } }, //设置列定义初始化属性,可以设置需要返回的内容 columnDefs: [ { targets: -1, render:function(data){ return "
"+ ""+ ""+ "
" } } ] }); ``` #2.Spring security 安全框架 参考 https://springcloud.cc/spring-security-zhcn.html #2.1 springSecurity执行流程 整个程序执行的过程如下: 1、容器启动时 MyInvocationSecurityMetadataSourceService # loadResourceDefine 加载系统资源与权限列表resourceMap(一个Map结构,资源[url]为key,权限[auth]为value ) 2、WEB服务器启动,加载security内置的过滤器链, HttpSessionContextIntegrationFilter LogoutFilter AuthenticationProcessingFilter DefaultLoginPageGeneratingFilter BasicProcessingFilter SecurityContextHolderAwareRequestFilter RememberMeProcessingFilter AnonymousProcessingFilter ExceptionTranslationFilter SessionFixationProtectionFilter FilterSecurityInterception 自定义过滤器拦截请求 MyFilterSecurityInterceptor ,并设置在FilterSecurityInterception之前拦截。 给自定义过滤器,注入参数(MyInvocationSecurityMetadataSource,MyAccessDecisionManager,MyUserDetailService) 3、用户登陆 通过 AuthenticationManager 对用户输入的用户名和密码,然后根据用户定义的密码算法和盐值等进行计算并和数据库比对。 4、如果验证成功 通过CustomUserService # loadUserByUsername 生成UserDetails供Spring Security使用。 5、当用户点击某个功能(URL)时。 通过MyAccessDecisionManager # decide 根据URl取得 系统资源与权限列表 resourceMap 中的权限集合。与登录用户的权限集合进行循环对比,如果存在相同权限,代表用户具有访问该资源的权利。 #3 项目配置 如果包路径修改了,需要对DataSourceConfig,SwaggerConfig 中的包路径进行修改。 修改包路径后,需要对以下几个地方进行修改 1、DataSourceConfig 需要对文件中涉及到包路径的地方进行修改, ![输入图片说明](https://images.gitee.com/uploads/images/2018/1025/085742_01196c19_1446081.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2018/1025/090021_dcac1e1e_1446081.png "屏幕截图.png") 2、application.yml ![输入图片说明](https://images.gitee.com/uploads/images/2018/1025/090117_38e6a789_1446081.png "屏幕截图.png")