权限管理

经典权限五张表

用户管理(为用户分配角色)

查询cms管理员列表

  1. cms_manager(系统用户表,id是自增那种,不是mysql的自增,是1,2,3,4这种,每次新增都降序取第一个id,然后加1)
  • 根据姓名和用户名称查询,条件是没有被删除的,核心字段is_delete
  • 新增,涉及密码加密
  1. 分配角色,
  • 系统角色表(cms_role),核心字段:name(角色名称),description(角色描述)
    角色有:超级管理员,
  • 系统用户角色关联表(cms_manager_role),
    核心字段:manager_id(系统用户id),role_id(角色id)
    3.角色管理
  • 分配权限,role_permission(系统角色权限关联表)
    核心字段:role_id(角色ID),permission_id(权限ID)
  1. 菜单管理(权限管理)
    cms_permission(系统权限表),
    核心字段:name(权限名称),description(权限描述),url(权限页面(url),springmvc的请求的全路径)

springSecurity密码加密解密工具类

package com.aihangyun.cms.util;import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.DelegatingPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder;
import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder;
import java.util.HashMap;
import java.util.Map;public class EncryptUtil {// 从配置文件中获得private static final PasswordEncoder encoder = DefaultPasswordEncoderFactories.createDelegatingPasswordEncoder();// 加密方法public static String encrypt(String rawPassword) {return encoder.encode(rawPassword);}// 解密方法public static boolean match(String rawPassword, String password) {return encoder.matches(rawPassword, password);}private static class DefaultPasswordEncoderFactories {// java注解,不检测过期的方法@SuppressWarnings("deprecation")static PasswordEncoder createDelegatingPasswordEncoder() {String encodingId = "MD5";// 代码 encoders 的 Map 包含了很多种密码编码器,有 ldap 、MD4 、 MD5 、noop 、pbkdf2 、scrypt 、SHA-1 、SHA-256Map<String, PasswordEncoder> encoders = new HashMap<>();// 静态工厂方法可以看出,默认是创建并返回一个 BCryptPasswordEncoder,// 同时该 BCryptPasswordEncoder( PasswordEncoder 子类)也是 Spring Security 推荐的默认密码编码器,其中 noop 就是不做处理默认保存原密码。// 一般我们代码中 @Autowired 注入并使用 PasswordEncoder 接口的实例,// 然后调用其 matches 方法去匹配原密码和数据库中保存的“密码”;密码的校验方式有多种,从 PasswordEncoder 接口实现的类是可以知道。encoders.put(encodingId, new BCryptPasswordEncoder());encoders.put("ldap", new org.springframework.security.crypto.password.LdapShaPasswordEncoder());encoders.put("MD4", new org.springframework.security.crypto.password.Md4PasswordEncoder());encoders.put("MD5", new org.springframework.security.crypto.password.MessageDigestPasswordEncoder("MD5"));encoders.put("noop", org.springframework.security.crypto.password.NoOpPasswordEncoder.getInstance());encoders.put("pbkdf2", new Pbkdf2PasswordEncoder());encoders.put("scrypt", new SCryptPasswordEncoder());encoders.put("bcrypt", new BCryptPasswordEncoder());encoders.put("SHA-1",new org.springframework.security.crypto.password.MessageDigestPasswordEncoder("SHA-1"));encoders.put("SHA-256",new org.springframework.security.crypto.password.MessageDigestPasswordEncoder("SHA-256"));encoders.put("sha256", new org.springframework.security.crypto.password.StandardPasswordEncoder());return new DelegatingPasswordEncoder(encodingId, encoders);}}
}

角色管理(为用户分配权限)

权限管理(菜单管理,到达每个页面的url)

yml文件

server:port: 8081tomcat:#最大工作线程数,默认200, 4核8g内存,线程数经验值800#操作系统做线程之间的切换调度是有系统开销的,所以不是越多越好。max-threads: 600 # Maximum amount of worker threads.# 最小工作空闲线程数,默认10, 适当增大一些,以便应对突然增长的访问量min-spare-threads: 100 # Minimum amount of worker threads.# 官方文档的说明为:当所有的请求处理线程都在使用时,所能接收的连接请求的队列的最大长度。# 当队列已满时,任何的连接请求都将被拒绝。accept-count的默认值为100。# 详细的来说:当调用HTTP请求数达到tomcat的最大线程数时,还有新的HTTP请求到来,# 这时tomcat会将该请求放在等待队列中,这个acceptCount就是指能够接受的最大等待数,默认100。# 如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)。accept-count: 700# 前端页面表单输入数据较多,包含多个文本、多张图片,在数据未压缩的情况下,最终上传失败。# 即:请求数据量过大,超出了最大阈值。
#    max-http-post-size: -1spring:application:name: info-cmsprofiles:active: ${environment}include:security:user:name: jasonpassword: jasondatasource:# springBoot默认数据源type: com.zaxxer.hikari.HikariDataSource#    url: jdbc:mysql://${DB_HOST}:${DB_PORT:3306}/info?useUnicode=true&characterEncoding=utf-8#    driver-class-name: com.mysql.jdbc.Driver#    username: ${DB_USERNAME}#    password: ${DB_PASSWORD}#    url: jdbc:mysql://${DB_HOST:172.19.134.132}:${DB_PORT:4006}/info?useUnicode=true&characterEncoding=utf-8#    driver-class-name: com.mysql.jdbc.Driver#    username: ${DB_USERNAME:test}#    password: ${DB_PASSWORD:aiHungG#$%687}#    url: jdbc:mysql://${DB_HOST:test.aihangcloud.cn}:${DB_PORT:3306}/info?useUnicode=true&characterEncoding=utf-8#    driver-class-name: com.mysql.jdbc.Driver#    username: ${DB_USERNAME:test}#    password: ${DB_PASSWORD:test}#    url: jdbc:mysql://${DB_HOST:db2.aihangxunxi.com}:${DB_PORT:3306}/info?useUnicode=true&characterEncoding=utf-8#    driver-class-name: com.mysql.jdbc.Driver#    username: ${DB_USERNAME:test}#    password: ${DB_PASSWORD:aiHungG#$%687}#    url:  jdbc:mysql://test.aihangcloud.cn:3306/info?useUnicode=true&characterEncoding=utf-8#    driver-class-name: com.mysql.jdbc.Driver#    username: test#    password: testurl: ${info.db.jdbc.url}driver-class-name: org.mariadb.jdbc.Driverusername: ${info.db.jdbc.username}password: ${info.db.jdbc.password}hikari:maxLifetime: 1765000 #一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒以上maximumPoolSize: 15 #连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count)# 用户登录设备后如果长时间没有进行操作,将一直占用此用户界面,造成资源的浪费,可以配置此命令将长时间连接始终处于空闲状态,系统将自动断开该连接。# 缺省情况下,用户连接的超时时间是10分钟;通常情况下,推荐设置用户界面断连的超时时间在10~15分钟之间,具体情况视情况而定。idle-timeout: 100000connection-init-sql: SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;data:mongodb:uri: ${info.mongo.uri}username:password:redis:database: 0host: ${info.auth.redis.host}port: ${info.auth.redis.port}password:#bannerbanner:location: banner-girl.txt#freemarkerfreemarker:cache: falsecharset: utf-8suffix: .ftltemplate-loader-path: classpath:/templates/settings:# auto_import正确批量加载freemarker宏定义的方法# 前几天自己写freemarker的宏的时候,总是加载不上宏标签# https://my.oschina.net/Tonyjingzhou/blog/510026# 不太懂,有时间研究研究auto_import: /spring.ftl as spring#servlet配置servlet:multipart:# 支持多文件上传enabled: true# 有时间研究这个参数file-size-threshold: 0max-file-size: 5MBmax-request-size: 10MB# https://www.cnblogs.com/cyh706510441/p/8855320.html# dzh,有时间研究resolve-lazily: false#国际化i18nmessages:basename: i18n/messagesencoding: UTF-8jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8#mybatis
mybatis:#pojo别名扫描包type-aliases-package: com.aihangyun.cms.domaintype-handlers-package: com.aihangyun.cms.common.enums.handler##eureka
#eureka:
#  client:
#    serviceUrl:
#      defaultZone: http://localhost:8761/eureka/logging:
#  config: classpath:config/log4j2-dev.xmllevel:com.aihangyun.cms.repository: debug
# 自定义变量## File Storage Properties
file:upload-dir: './uploads'chat:host: dev.aihangcloud.cnlogin: http://dev.aihangcloud.cn:8092/user/loginpush: http://dev.aihangcloud.cn:8092/tigase/push2usersip: 172.19.26.7#chat:
#  host: dev.aihangcloud.cn
#  login: http://192.168.100.224:8092/user/login
#  push: http://192.168.100.224:8092/tigase/push2users
#  ip: 172.19.26.7sms:  # 短信验证码aliyun:accessKeyId: LTAIHhiyEU6dgRNTaccessKeySecret: YNxfEbW5BilcoiHrbAWhdjL89FKYmwcode-timeout: 60000domain: dysmsapi.aliyuncs.com # 产品名称:云通信短信API产品,开发者无需替换product: Dysmsapiredis-namespace: 'sms:key:' # 自定义redis命名空间#广告 info-ad
#收藏  info-favortite
#关注  info-follow
#浏览记录  info-history
#广告关键字 ad-lable
es:host: ${info.elasticsearch.host}port: 9200scheme: httpinfoAd: info-adinfo:app:domain: localhost:8082

安航云cms系统面试话术相关推荐

  1. 初级程序员面试话术(1)

    其实我也是一个刚入行不是很久的小白,和同为初开的朋友们聊天所得,来和大家分享一下在面试的时候或者想成为java程序员的时候应该去注意些什么,首先是从简历下手,简历的好坏也决定着面试机会! 一:简历 简 ...

  2. 软件测试面试话术有哪些?一文告诉你,面试时该怎么做

    想要获得一份工作,面试是必不可少的环节,在软件测试的面试过程当中,总会遇到面试官们各种不同的问题,而这个环节,我们虽然无法预知,但却可以提前做好面试准备. 所以,接下来的这些软件测试面试话术以及可面试 ...

  3. 软件测试面试话术 这样准备,让你成功拿到高薪offer

    面试就是就是进入岗位前的临门一脚,如果因为准备不足而导致面试失败那可就亏大了!因此,为了帮助大家提高面试成功率,尽快拿到高薪offer,我为你们准备了一套面试话术以及技巧,希望对即将参加软件测试面试的 ...

  4. 软件测试面试话术有哪些 一分钟告诉你面试时这样说更加分

    在软件测试面试中,面试者都会遇到面试官各种不同的问题,虽然我们无语预知面试官具体会问什么问题,但我们可以针对性地去做好面试准备. 以下是我给大家整关于软件测试面试技巧以及话术. 技能方面 去分析你要面 ...

  5. 应届毕业生所需准备的面试话术及套路回答

    面试中会出现的问题话术及套路回答 谈谈你的缺点? 我需要学会耐心一点,我的性子比较急,总要自己的工作赶在第一时间完成,我不能容忍工作怠慢. 你为什么选择我们公司 我十分看好贵公司所在的行业,我认为贵公 ...

  6. 数据分析面试题-面试话术

    目录标题 1,数据分析流程 2,游戏内数据分析涉猎的少,如何证明自己有能力胜任?(学习话术) 3,对于游戏而已,重要的指标 4,数据分析的理解是什么,如何学习数据分析的,职业看法 5,数据分析常用软件 ...

  7. 常见大数据面试话术(建议收藏)

    点击上方 "大数据肌肉猿"关注, 星标一起成长 后台回复[加群],进入高质量学习交流群 2021年大数据肌肉猿公众号奖励制度 面试吹牛之前先打草稿! 各位面试官好! 我叫 xxx, ...

  8. java电商项目面试话术,不可思议!

    前言 其实前几篇文章已经写了好多有关于Spring源码的文章,事实上,很多同学虽然一直在跟着阅读.学习这些Spring的源码教程,但是一直都很迷茫,这些Spring的源码学习,似乎只是为了面试吹逼用, ...

  9. java软件工程师面试话术,已拿offer入职

    业界常用的服务注册与发现组件对比 了解服务注册与发现的基本原理后,如果你要在项目中使用服务注册与发现组件,当面对众多的开源组件该如何进行技术选型? 在互联网公司里,有研发实力的大公司一般会选择自研或者 ...

最新文章

  1. WPF的消息机制(二)- WPF内部的5个窗口之隐藏消息窗口
  2. 干货 | 基于特征的图像配准用于缺陷检测
  3. 《CCNP TSHOOT 300-135认证考试指南》——6.4节SVI故障检测与排除
  4. 怎样在android平台上使用第三方jar包
  5. python 列表索引位置,python – 在列表中查找值的第一个位置
  6. 基于CentOS7,MySQL5.7的同步/半同步复制实现
  7. Python:Django 项目中可用的各种装备和辅助
  8. python android开发_Android与Python爱之初体验
  9. idea 设置默认 jdk
  10. C++与QT学习路线
  11. C# 图片验证码简单例子
  12. 计算机网络技术——VLAN划分
  13. Python可视化:python画图字体设置
  14. 《SteamVR2.2.0传送机制(Teleport)=快速入门大结局》(Yanlz+Unity+XR+SteamVR+Interaction+Teleport+Valve+立钻哥哥++ok++)
  15. Windows7 UAC 实验
  16. 华为计算机电话号码魔术,看完这6个操作,我终于相信华为手机真的有魔法!...
  17. 如何将图片存进SQL数据库中以及从数据库读取照片(解决办法)
  18. tensor如何实现转置_pytorch tensor 变换
  19. C语言————exec函数族
  20. GIF修复(图片隐写)

热门文章

  1. 东方财富服务器稳定吗,东方财富客户端如何设置自动选择服务器 设置有条件选股方法...
  2. 数据可视化之矢量库 Pygal
  3. 税后工资和税前工资的对应计算
  4. python求共轭复数_python中复数的共轭复数知识点总结
  5. Apache常用配置修改
  6. AI时代的视频云转码移动端化——更快、更好,更低,更广
  7. 字节跳动数据分析岗笔试分享笔试形式和内容
  8. 苹果电脑压缩视频大小变小怎么压缩那个软件好
  9. 对自己学习的一点总结
  10. 2020-09-16