项目介绍

表的设计
- 用户表- 用户名
- 用户 id
- 用户密码
- 所属院系 id
- 创建和修改时间
 
- 角色表- 角色 id
- 角色名称
 
- 权限表- 权限id
- 权限名称
- 权限标识
- 权限类型
- 父权限 id
 
- 用户-角色表
- 角色-权限表
- 院系表
- 图书表
权限管理
复杂的权限管理: 用户对应角色,角色对应权限,基于角色的权限管理(RBAC)
后台管理系统
基于 vue 和 element-ui 的一套后台管理系统模板  vue-admin-template
密码问题
要对保存到数据库的密码进行加密;我们现在主流的做法都是基于 Hash 的加密算法来实现对密码的加密;因为Hash是不可逆的;
Md5
根据一个明文生成唯一的一串密文;只要改变明文中的任意一个字符,密文都会发生极大的变化;
如果密码太简单可能通过第三方的数据库进行对比查询,那么我们就有其他解决方案:
- 二次md5
- 加盐(salt)
登录模块
- 完整的登录的解决方案 - 基于 session 的登录(使用与传统的 web 复合项目) - 现在主流的登录方式不会使用这种形式,因为现在我们在商业项目中,可能服务的客户端不只是浏览器,有可能是小程序,安卓app,IOSapp,而 app 是不支持 cookie 的 
- 基于 JWT 的登录  
 
跨域问题
一个域的三要素:
- 协议
- 主机/域名
- 端口
默认浏览器中不支持后台的ajax跨域访问的;处于安全因素考虑的
浏览器对于javascript的同源策略的限制,例如http://a.cn下面的js不能调用http://b.cn中的js对象或数据(因为http://a.cn和http://b.cn是不同域)
同源策略会阻止一个域的JavaScript脚本和另一个域的内容进行交互
跨域问题的解决方案:
- 前端解决(通过代理的方式解决,不推荐) 
- 后端解决(真正意义上解决了跨域问题) 
- CORS方案,就是通过服务器设置响应头来实现跨域 。 - CORS才是解决跨域的真正解决方案。 
 前端需要做什么?- 无需做任何事情,正常发送Ajax请求即可。 - 后端需要做什么? - 需要加响应头 。或者使用第三方模块 cors 。 - WebConfig配置类解决跨域问题 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 public class WebConfig implements WebMvcConfigurer {
 
 public void addCorsMappings(CorsRegistry registry) {
 //设置允许跨域的路径
 registry.addMapping("/**")
 //设置允许跨域请求的域名
 .allowedOriginPatterns("*")
 //是否允许cookie
 .allowCredentials(true)
 //设置允许的请求方式
 .allowedMethods("GET", "POST", "DELETE", "PUT")
 //设置允许的header属性
 .allowedHeaders("*")
 //跨域允许时间
 .maxAge(3600);
 }
 }
 
                     
                     
                        
                        