java实现用户权限模块两种方法
方法一:
一般用这种比较多的,3个模块:用户模块、角色模块、菜单模块,对应数据库表:用户表、角色表、菜单表、用户角色表、角色菜单表,这种方法实现思路表结构都清晰明确,当然也存在一个弊端:菜单表添加菜单时,因为菜单中存在父子关系,不懂技术的添加菜单表容易出错
表结构:
用户表
`id` INT
`login_name` VARCHAR
`password` VARCHAR
`user_name` VARCHAR
角色表
`id` INT
`role_name` VARCHAR
`role_describe` VARCHAR
菜单表(此表定义以下字段,是因为前端是vue写的,可根据自己选择的框架调整字段):
`id` INT
`path` VARCHAR
`component` VARCHAR
`menu_name` VARCHAR
`menu_type` VARCHAR
`parent_id` VARCHAR
`enabled` VARCHAR
`group_id` VARCHAR
用户角色表(用户分配角色,使用此表)
`id` INT
`user_id` INT 用户表id
`role_id` INT 角色表id
角色菜单表(角色分配菜单使用此表)
`id` INT
`menu_id` INT 菜单表id
`role_id` INT 角色表id
方法二:
这是一个简化版本的,但实现起来比较简单,对于方法一,砍掉了角色,对于小项目来说比较适合。两个模块:用户模块,权限模块,对应数据库表:用户表、权限表,这里用户表和方法一的用户表基本相同,可以根据需要添加部门字段,权限表中不存放菜单信息,菜单信息存放到前端,可以是一个json格式,但表中要存菜单对应的id,用户id,这就和用户表关联起来了。
前端查询用户表,显示用户列表,点击某个用户时,查询其权限列表,显示对应的权限列表(树形结构的),已经拥有的权限是勾选状态。
用户表
`id` INT
`login_name` VARCHAR
`password` VARCHAR
`user_name` VARCHAR
`department` VARCHAR
权限表
`id` INT
`resource_id` INT 此字段对应前端的菜单id
`user_id` INT 用于关联用户表
java实现用户权限模块两种方法相关推荐
- mysql查询_MySQL查看用户权限的两种方法
MySQL查看用户权限命令的两方法: 一. 使用MySQL grantsmysql> show grants for username@localhost;实例:mysql> show g ...
- JAVA获取安卓系统下usb_Android 获取 usb 权限的两种方法
前言: 最近工作上遇到几个USB模块在android平台上适配使用的情况,所以要用到USB权限获取问题 ##USB权限获取有以下2种方式: 一.直接在AndroidManifest.xml文件中进行如 ...
- 计算机用户没有管理员权限,教你让win7系统电脑普通账户拥有管理员权限的两种方法...
在ghost win7系统电脑中如果没有管理员权限,是没办法打开一些程序.文件的,甚至删除一些文件也要有管理器权限,不然就会提示"您的权限不足,请点击继续来获得权限."那么怎么让一 ...
- 进Linux系统单用户模式,Linux进入单用户模式的两种方法
单用户模式的作用 在使用Linux系统中,维护人员经常会碰到一个问题,就是在拥有root账号权限和密码的用户中,总是会出现忘记root密码的情况. 遇到这种情况,一般情况下,维护人员就会通过最常用的方 ...
- root android oppo,OPPO R9S怎么ROOT oppor9s获取root权限的两种方法
OPPO R9S如何ROOT呢?作为一款最新的OPPO系列智能手机,对于刚入手的用户而言,可能不知该如何获取OPPO R9S手机ROOT权限.下面就与大家分享一下获取OPPO R9S手机ROOT权限的 ...
- 进入root权限的两种方法
*进入root权限的两种方法 第一种方法:sudo(暂时的):使用root权限而不是直接进入, sudo + <指令> 第二种方法:root(非暂时的):输入sudo passwd roo ...
- java 匿名list,java创造匿名对象的两种方法
在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...
- 小程序获取用户信息的两种方法
小程序获取用户信息的两种方法 第一种使用 getUserProfile 代码示例 第二种使用 头像昵称填写 相信大家之前也经常使用open-data获取用户的头像和昵称吧,但微信的这个改编意味着我们要 ...
- JAVA中初始化线程的两种方法_java中最简单的方式新起一个线程
启动一个线程 在一个方法中启动一个线程,有两种方法 第一种是让类实现Runable接口,这样的话编译器就会提示你实现里面的未实现的方法(就是run方法) 第二种是,现在方法中new一个线程,然后直接调 ...
最新文章
- 6.1.Scrapy项目
- linux u8 头文件,2019-12-11 转载TCP/IP编程常用C语言头文件
- Eclipse 中查看一个方法被哪些对象引用了
- html 自动隐藏属性,隐藏(属性) | hidden (attribute)
- fortran还是python_Fortran 还有存在的必要吗?
- [Windows]_[0基础]_[Release程序的崩溃报告minidump解决方式]
- 性冷淡风的麻将,获红点奖!网友:没有烟火气了
- python表格处理免费教程_手把手教你用Python处理Excel表格
- Android应用删除顶部标题栏
- Sentry的安装搭建与使用
- svn和git下载安装
- 华氏温度转换为摄氏温度,c语言实例一
- [论文评析]Long-Tail Learning via Logit Adjustment,ICLR,2021
- 51nod1538: 一道难题(特征多项式+多项式取模/求逆)
- linux开发员用游戏本吗,为什么很多程序员使用thinkpad而不是同等价位的游戏本呢?...
- 用电脑怎么快速抠图?怎么把图片抠成透明背景?
- 打造高效的项目团队,促进项目进度管理
- websocket 客户端测试工具
- day1-python基础1
- 津津的储蓄计划 NOIp提高组2004
热门文章
- 【通信】【2】《宽带太赫兹通信技术》的笔记和一些简单的词汇的意思(误
- Javascript日期和时间戳(毫秒/秒)相互转化,日期分隔符不同转化结果不同
- Delphi第三方插件的安装
- 大数据标签获取处理步骤_基于大数据的用户深层标签挖掘方法与流程
- HDMI转MIPI DSI芯片TC358870XBG
- java gc 时间_Java GC日志查看,GC日志时间分析
- 反编译简书app和小红书app滑动效果sticky粘性头布局的实现CoordinatorLayout+behavior
- 关于孩子如何进行艺术教育的思考(一)
- 计算机室管理员管理格言,计算机老师的教育格言
- Android Studio中配置Genymotion模拟器