10 xiaoxiao1777

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 7w+

数据库表一对多,多对一,多对多的理解

建表的时候,首先得明确两个实体之间的关系是属于哪一种,多对多是属于双向的一对多,即:站在彼此的角度,它们都是一对多的关系比如: 班级和学生分析:先站在班级角度,一个班级有多个学生,再站在学生角度,一个学生只能属于一个班级,那么它们就不属于多对多的关系,这样关系就好建立了,在多的这边建立一个外键,与一的这边的主键关联,即:学生的这边建立 一个外键与班级主键相关联如果是多对多的关系,是不可以进行彼此建立外键的,只能另外建立一个关系表,来建立起它们之间多对多的关系用户,角色,权限就是这样的多对多关

2020-08-08 17:59:01

对sesson的简单理解

每个用户登录成功之后,shiro都会给该用户创建一个独立的session对象,同时再创建一个sessionId,存放起来,并且给该前端传递对应的sessionId,前端拿到sessionId存放起来,下次访问的时候,拿上sessionId,后端拿到sessionId进行识别,找到对应的session,就好比在银行开通一个账户一样,有独立的银行卡号,不同的用户访问同一个后台,后台都能给它们分配到对应的session上,彼此不会受影响SessionDao:负责对session的存,取,改,删Simple

2020-06-23 17:09:09

鉴权原因

情景:前端对按钮权限做了控制,无权限的不显示,但这只是最基本的控制,如果有人通过postman软件发送删除请求,并且携带上token,这个token是在浏览器开发者工具中可以查到的,后端如果不做防御处理的话是很危险的需求分析:后端如何做防御呢?后端在收到请求后,设置一个拦截器,去比对请求的api是否在该用户的权限列表中,这样的目的就是为了防止有人通过postman发送不合法的请求,同时也防止了前端页面中万一忘记写v-if暴露了某个按钮,也可以在后端进行了补救,起到二次控制作用jwt和sh

2020-06-03 09:52:18

加载用户菜单权限信息放到哪里合适

情景:登录成功获取到token后,跳转到首页,请求用户的权限信息(包括可访问的菜单信息)这一步是放到跳转之前的路由守卫中,还是放到首页的钩子函数中呢?分析:其实都可以,但觉得还是放到跳转之前,依然处于登录页面中好一些,因为数据处理准备好,再去加载页面会合理...

2020-05-31 11:45:27

给用户分配角色情景

给用户分配角色情景:显示出所有角色,当前选中用户拥有的角色是选中状态分析:1.查询出所有角色select * from sys_roles2.根据用户id查询出已选择的角色使用左外连接可以把1和2的过程进行合并,不必要分开做两次查询左外连接 left join特点:即便右边中找不到关联数据,左表的数据也会全部显示,关键是要考虑把谁作为左表select r.roleName, r.roleId, u.userIdfrom sys_rol

2020-05-30 10:15:59

将表结构中的数据转化为树形节点数据对象

情景:左侧菜单,右侧权限树,它们接收到的数据都应为后台处理好的树形节点数据,不应该在前端来进行树状结构的转化,虽然比如Z-Tree自带这个功能,但是会造成前端树形显示延迟解决:后端提供一个工具类进行转换一次将数据查询出来,再进行递归建模:即先创建一个节点类public class TreeNode { private Integer id; private String name; private Integer pid; //子节点数组 必须先初

2020-05-29 17:40:15

权限管理系统数据库表的设计分析

为什么要分析这些呢?因为从前端到后端都自己写的话,数据库中表结构的设计是基础,很关键,这样从前到后才是清晰的权限控制:就是指对菜单和按钮可见性的控制,菜单:根据登录用户返回的菜单数据进行动态加载,v-for遍历;按钮:比如点开订单管理界面,会先从功能表中查询出对应的按钮权限数据进行判断显示还是隐藏,v-if判断权限表设计思想:所分配的权限就是指左侧的菜单项和右侧菜单项对应页面上的按钮,这些在前端页面上表现出的是对应的控件,对应到数据库中就是一些对应的id和名称信息一般左侧菜单最多分三

2020-05-25 11:55:12

配置与优化

通过vue-cli3.0工具生成的项目,默认隐藏了所有webpack的配置项,目的是为了屏蔽项目的配置过程,让开发者把工作的中心,放到功能和业务逻辑上如果有修改webpack默认配置的需求,可以在项目根目录中,按需创建vue.config.js这个配置文件默认情况下,通过import导入的第三方依赖包,会最终打包合并到一个文件中,从而导致打包文件体积过大的问题,如在ui可视化面板中,可以看到资源中第一个文件体积特别大为了解决以上问题,可以通过webpack的externals的节点,来配置加载外

2020-05-23 10:51:34

发布时候去除项目中所有的console

测试阶段可以有console,发布后让console失效1.开发依赖:babel-plugin-transform-remove-console2.babel-config.js中// 项目发布阶段需要用到的babel插件const prodPlugins = []if (process.env.NODE_ENV === 'production') { prodPlugins.push('transform-remove-console')}plugins:中配置//发布产.

2020-05-23 09:34:26

进度条nprogress使用

1.安装依赖2.导入NProgress包对应的js和cssimportNProgressfrom'nprogress'import'nprogress/nprogress.css'3.请求拦截器中 NProgress.start()4.响应拦截器中 NProgress.done()

2020-05-23 09:11:02

vue中echarts使用

1.安装依赖-->运行依赖-->echarts 图形化界面真的很好用,弥补了命令的繁琐2.在需要的组件页面中导入,不要在main.js中导入,因为不是所有的地方都用到import echarts from 'echarts'3.mounted函数中创建实例和数据注意:不要把这些放到created函数中,mounted是dom元素加载到界面后调用,图标是在template中的dom元素加载后才去显示created表示dom元素加载到内存中调用,此时还没有显示,把图标组件放到这

2020-05-23 08:51:44

vue中data一个规则

如果属性名和属性值相同,可以简写为一个如:name: name 直接简写为name

2020-05-22 20:34:23

富文本编辑器组件vue-quill-editor

依赖->安装依赖->运行依赖—>vue-quill-editor// 导入富文本编辑器import VueQuillEditor from 'vue-quill-editor'// 导入富文本编辑器的样式import 'quill/dist/quill.core.css' // import stylesimport 'quill/dist/quill.snow.css' // for snow themeimport 'quill/dist/quill.bubble.cs

2020-05-22 15:19:42

vue图片上传功能

element-ui提供了上传的组件,真是方便,el-upload情景:界面上虽然看到选取后上传到界面了,但是没有传到后端,F12->network可以看到400原因:它自己内部封装了一套ajax请求,而不通过axios请求,这样就会导致上传不成功,因为默认没有携带token,所有的api接口除了登录,只要通过axios方式进行请求,就会通过请求拦截器就行携带token,当然这个请求拦截器是自己配置的解决:上传组件el-upload手动绑定一个属性 :headers="hea.

2020-05-22 11:34:23

vue中字符串和数值互转

数值转字符串num + ' '长的像数值的字符串转数值,让它减0就可以如: strVal = '1'strVal - 0

2020-05-22 09:40:26

自定义格式化时间的全局过滤器

main.js中定义// 自定义格式化时间的全局过滤器Vue.filter('dataFormat', function(originVal) { const dt = new Date(originVal) const y = dt.getFullYear() const m = (dt.getMonth() + 1 + '').padStart(2, '0') const d = (dt.getDate() + '').padStart(2, '0') const hh =.

2020-05-21 09:45:34

表单的取消操作

情景1:当新增一个用户或者新增一个存货时,输入了相关信息,又不想新增了,点击了取消,表单中的输入框应该置空解决:不需要挨个获取输入框控件置空,如果是引用的element-ui,设置ref后,获取到该form,调用resetFields()this.$refs.addUserFormRef.resetFields()其它UI库应该也有类似操作,多看文档情景2:修改用户后,又点击了取消解决:待补充...

2020-05-19 11:34:46

分配权限过程

每一个节点都有唯一的id值,选中某个节点,就可以获取到该节点的id值,el-tree提供了一个默认勾选节点的数组属性,这个值对象得自己提供选中某些节点后,拿到它们的id放入数组中在点击分配按钮的同时,即弹出树形结构对话框之前,把已有末级节点的id值全部拿到,放到数组中,通过:default-checked-keys="defkeys"属性绑定,把这个数组交给该属性如何拿到呢?定义一个递归函数,把当前选中的角色传到函数中,通过递归的方式把末级节点id值都放到数组中分配权限:点击确定分配

2020-05-19 11:29:22

vue中返回结果是promise的处理

调用element-ui中提供的方法是,经常返回结果类型对象是promise,如果某个函数调用的结果打印后返回的是promise,就马上用saync和await进行优化,async放到方法名称的前面,await放到方法里面

2020-05-17 11:54:29

vue中新增弹出对话框操作

情景:点击新增用户或者新增订单,弹出对话框页面进行信息输入操作分析:这个对话框组件是直接放到用户组件代码中的,自带一个属性,控制是否显示,默认为false不显示,需要显示的时候拿到此属性对应的变量,设置为true主体内容使用表单组件<!-- 添加用户的对话框 --> <el-dialog title="添加用户" :visible.sync="addDialogVisible" width="

2020-05-16 15:40:03

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。