博客管理系统


项目介绍

image-20220208100322419

表的设计

  • 用户表
    • 用户名
    • 用户 id
    • 用户密码
    • 所属院系 id
    • 创建和修改时间
  • 角色表
    • 角色 id
    • 角色名称
  • 权限表
    • 权限id
    • 权限名称
    • 权限标识
    • 权限类型
    • 父权限 id
  • 用户-角色表
  • 角色-权限表
  • 院系表
  • 图书表

权限管理

复杂的权限管理: 用户对应角色,角色对应权限,基于角色的权限管理(RBAC)

后台管理系统

基于 vue 和 element-ui 的一套后台管理系统模板 vue-admin-template

密码问题

要对保存到数据库的密码进行加密;我们现在主流的做法都是基于 Hash 的加密算法来实现对密码的加密;因为Hash是不可逆的;

Md5

根据一个明文生成唯一的一串密文;只要改变明文中的任意一个字符,密文都会发生极大的变化;

如果密码太简单可能通过第三方的数据库进行对比查询,那么我们就有其他解决方案:

  • 二次md5
  • 加盐(salt)

登录模块

  • 完整的登录的解决方案

    • 基于 session 的登录(使用与传统的 web 复合项目)

      现在主流的登录方式不会使用这种形式,因为现在我们在商业项目中,可能服务的客户端不只是浏览器,有可能是小程序,安卓app,IOSapp,而 app 是不支持 cookie 的

    • 基于 JWT 的登录

      image-20220217105753208


跨域问题

一个域的三要素:

  • 协议
  • 主机/域名
  • 端口

默认浏览器中不支持后台的ajax跨域访问的;处于安全因素考虑的

浏览器对于javascript的同源策略的限制,例如http://a.cn下面的js不能调用http://b.cn中的js对象或数据(因为http://a.cnhttp://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
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
    //设置允许跨域的路径
    registry.addMapping("/**")
    //设置允许跨域请求的域名
    .allowedOriginPatterns("*")
    //是否允许cookie
    .allowCredentials(true)
    //设置允许的请求方式
    .allowedMethods("GET", "POST", "DELETE", "PUT")
    //设置允许的header属性
    .allowedHeaders("*")
    //跨域允许时间
    .maxAge(3600);
    }
    }

文章作者: Yang Shiyu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Yang Shiyu !
  目录