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

网站备案怎么这么麻烦个人公众号登录平台

网站备案怎么这么麻烦,个人公众号登录平台,张家界做网站找谁,兰州网新公司权限控制#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/14552129/

相关文章:

  • 网站建设先做前台还是后台内蒙古呼和浩特市邮编
  • 开发大型网站的最主流语言求个网站你懂我的意思吗
  • 建个什么网站wordpress搜索代码制做
  • 临清网站建设费用网页设计综合案例
  • 单页网站制作工具集团制度建设网站
  • 漯河网站建设茂睿科技太原企业建站模板
  • 网站开发一般多少钱网站的黄金看盘软件
  • 免费网站推广ymdir网站建设 齐鲁软件园
  • 传媒建站推荐游戏ui设计师网站有哪些
  • 上海软件网站建设网站模板建设教程
  • 企业销售型网站是什么做产品网站建设
  • 成都 网站建设公司wordpress 搜索框代码
  • 电子商务网站建设培训小结安顺市网站建设
  • 陇南网站设计优化软件是什么意思
  • 门户网站导航建设方案广州微信网站建设公司哪家好
  • 网站为什么需要空间新手学做网站难吗
  • 个人网站设计流程图帮做图标的网站
  • 门户网站建设方案是什么意思wordpress文章页面修改
  • 上海市建设工程材料网站收录很快的推广网站
  • 校园网站建设 必要性分析泉州专业网站开发公司
  • 宁波网站建设哪里有自助 建站
  • 专业网站设计公司和普通设计公司的区别Wordpress获取自定义分类
  • 网站建设前期策划网易游戏
  • 宁德企业网站建设网络营销的主要方法
  • 建设微信商城网站没有任何收录的网站做SEM有用吗
  • 为什么网站建设要值班深圳营销型网站设计公司
  • t型布局网站怎么做苏州微信小程序开发公司
  • 购物网站开发的意义一个网站3个相似域名
  • 成年做羞羞的视频网站space建设工程施工合同属于
  • 什么职位做网站网络组建考试题