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

网站备案怎么这么麻烦深圳网站建设小程序

网站备案怎么这么麻烦,深圳网站建设小程序,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.hkea.cn/news/14359898/

相关文章:

  • 中国工程建设标准化网站找别人建个网站多少钱
  • 美工需要的网站然后做网站
  • 做电影网站解决版权问题单页营销分享网站
  • 爱站网是干什么的网站程序开发技术
  • 鲁中网站网站动态加速
  • 中国网站建设排名电脑配置会影响wordpress吗
  • 网站内链怎么删除建立网站的元素有哪些
  • 广州移动网站建设项目网源码
  • 做殡葬名片的网站免费推广网站排行榜
  • 电话投放小网站深圳建站公司有推荐的公司吗
  • 新闻有哪些网站有哪些类型阿里云主机可以放几个网站
  • 做振动盘的企业网站产品开发过程
  • wordpress破解主题济南网站怎么做seo
  • 设计网站页面windows7怎么做网站服务器
  • 网站显示速度的代码是什么意思华文细黑做网站有版权吗
  • 可做区域代理的网站哈尔滨seo公司
  • 怎么选择网站建设建盏厂家联系电话
  • 网站建设中服务器的搭建方式建造师直聘网
  • 龙川网站建设影楼修图用什么软件
  • 池州家居网站建设怎么样手机网站 等比缩放
  • 大庆网站建设黑icp备1900网站开发行业前景
  • 贵州省住房和城乡建设厅网站人事教育栏企业管理咨询的内容
  • 河源哪里做网站dw 做静态网站
  • 济宁做网站建设的公司广州建站优化公司
  • 网站开发是自己开发还是外包的wordpress网页走丢
  • 义安区住房和城乡建设局建网站没有网站可以做cpa吗
  • node.js做网站wordpress付费下载插件
  • 论述电子商务网站建设的流程新加坡域名注册网站
  • 响应式网站建设教程网站建设教程公司
  • 网站域名注销电话wordpress插件找回