当前位置: 首页 > news >正文

网站备案邮寄资料嵌入式开发要学哪些

网站备案邮寄资料,嵌入式开发要学哪些,wordpress会员下载功能,wordpress 替换 插件权限控制#xff1a;不同的用户可以使用不同的功能。 我们不能在前端判断用户权限来控制显示哪些按钮#xff0c;因为这样#xff0c;有人会获取该功能对应的接口#xff0c;就不需要通过前端#xff0c;直接发送请求实现功能了。所以需要在后端进行权限判断。#xff0…权限控制不同的用户可以使用不同的功能。 我们不能在前端判断用户权限来控制显示哪些按钮因为这样有人会获取该功能对应的接口就不需要通过前端直接发送请求实现功能了。所以需要在后端进行权限判断。前端防君子后端防小人。 授权流程springSecurity会默认使用FilterSecurityInterceptor进行权限校验会从SecurityContextHolder中获取authentication获取权限信息进行判断。 所以需要我们做的就是把用户的权限信息存入authentication。 那么SecurityContextHolder中的权限信息是从哪里获取的呢前面SecurityContextHolder中的认证用户信息是从redis中获取的权限信息也一样。 我们先说说权限控制的方案1、springSecurity提供注解2、配置 注解权限控制是我们经常用的我就只说这个方案了。 使用权限控制注解需要在SecurityConfig配置类中开启配置 EnableGlobalMethodSecurity(prePostEnabled true) Configuration //开启权限控制注解 EnableGlobalMethodSecurity(prePostEnabled true) public class SecurityConfig extends WebSecurityConfigurerAdapter {..... } 我们能用的权限控制注解有很多但真正经常用的只有PreAuthorize就是在访问之前进行权限判断。写在controller层的请求方法上。 PreAuthorize(hasAuthority(test)) 这里其实是去调用hasAuthority方法去判读权限返回true即有权限。test为权限名 RestController RequestMapping public class HelloController {GetMapping(/hello)//这里其实是去调用hasAuthority方法去判读权限返回true即有权限.test为权限名,这里只能填一个权限PreAuthorize(hasAuthority(test))public String hello(){return hello;} 至于 权限名的定义和权限内容的定义 在后面定义。 注解类方法 PreAuthorize(hasAuthority(权限名)) 除了前面用的hasAuthority方法外还有其他的校验方法当然我们也可以自定义校验方法。 hasAuthority(‘’)方法只能填一个权限。 hasAnyAuthority(‘’,’’,’’)方法可以传入多个权限其中用户有任意一个权限都可以访问。 hasRole(‘’)方法要求有对应角色才可以访问。它内部会把我们传入的角色参数拼接上 ROLE_ 后在去比较所以需要对用户的权限也要有 ROLE_ 这个前缀。 hasAnyRole(‘’,’’,’’)方法要求有对应任意角色才可以访问。它内部也会把我们传入的角色参数拼接上 ROLE_ 后在去比较所以需要对用户的权限也要有 ROLE_ 这个前缀。 同时权限是实体类User类的属性 Data NoArgsConstructor //AllArgsConstructor public class LoginUser implements UserDetails {//需要定义User对象来封装用户信息。private User user;//该用户的权限信息private ListString permissions;public LoginUser(User user, ListString permissions) {this.user user;this.permissions permissions;}//问题当我们把logUser存入redis中时redis默认不会把SimpleGrantedAuthority对象序列化。//解决我们不需要把SimpleGrantedAuthority存入redis我们只需把权限信息permissions存入即可//通过permissions反序列化即可获取authorities所以需要忽略SimpleGrantedAuthority不要对它序列化JSONField(serialize false)private ListSimpleGrantedAuthority authorities;Override //实际springSecurity获取权限信息是调用的该方法重写该方法。public Collection? extends GrantedAuthority getAuthorities() {//优化如果每次获取权限都进行集合转换有点浪费。我们只第一次去集合转换后续获取直接返回之前转换好的//即把ListSimpleGrantedAuthority authorities定义为成员变量。if(authorities!null){return authorities;}authorities permissions.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList());return authorities;} } 然后去数据库中查询用户权限 到数据库中查询权限信息 RBAC权限模型Role-Based Access Control基于角色的权限控制。这是目前最常被开发者使用也是相对易用、通用权限模型。 在数据库中我们会创建一个用户表一个权限表记录着权限功能说明和权限名一个用户可以有多个权限不好表达所以我们又引入了一个角色表里面有很多角色在创建个角色权限管理表每种角色对应不同的多种功能为角色赋予不同的权限。比如图书馆管理系统中的角色图书管理员权限添加、查询、删除等等借阅者权限查询、借阅。同时一个用户可能会有多种身份需要将用户与角色关联起来。 这就是RBAC模型最少都是5张表 5表联合查询用户权限role为角色表menu为菜单表可以理解为权限表  mapper namespaceorg.example.springSecurity.mapper.MenuMapperselect idselectPermsByUserId resultTypejava.lang.Stringselectdistinct m.permsfrom sys_user_role urLeft join sys_role r on ur.role_id r.idLeft join sys_role_menu rm on ur.role_id rm.role_idLeft join sys_menu m on m.id rm.menu_idwhereuser_id #{userId}and r.status 0and m.status 0/select /mapper
http://www.yayakq.cn/news/3080/

相关文章:

  • 做餐饮如何加入外卖网站怎样给建设的网站提意见
  • 生物科技 网站模板婚庆网站建设目的
  • 网站详情页用cdr做可以吗网页制作公司挣钱吗
  • 免费自助建站排名wordpress 4.9 站群
  • 出版社网站建设网站的网络推广
  • 司瓦图网站编写app
  • 传播型网站建设优势有哪些唐山建网站的公司
  • 自己做的网站程序怎么发布深圳互联网设计开发
  • 公司如何建站萧山区seo关键词排名
  • 网站用什么开发软件做wordpress评论不了
  • 做资源网站做网站需要什么语言
  • php购物网站开发设计与实现wordpress 成功案例
  • 做的不错的网站公司网站可以个人备案吗
  • 南宁大型网站推广公司wordpress mip提交
  • 提供常州网站优化邯郸招聘信息最新招聘
  • 坪地网站建设教程免费做h5的网站有哪些
  • 网站友情链接建设软文营销的本质
  • 学做炒菜的网站广安发展建设集团官方网站
  • 机关公文写作网站做网站的财务需求
  • 网站建设图片大小肇庆专业网站建设公司
  • 东营网站建设那家好网站维护会导致打不开网页吗?
  • 绍兴公司做网站响应式 官网网站
  • 做网站 对方传销做网站文字编辑好不好
  • 手机网站 微信链接怎么做规模以上工业企业总产值
  • 射阳做网站多少钱网站建设优化推广哈尔滨
  • 南昌网站建设公司价位网络维护员主要什么工作
  • 石家庄谁会搭建网站廊坊学校网站建设
  • 新网如何管理网站WordPress HTML标签验证
  • 网站开发的服务器是什么哈尔滨招标信息网
  • 福田做棋牌网站建设哪家好动漫制作与设计专业