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

网站上线模板百度电脑版官网下载

网站上线模板,百度电脑版官网下载,企业做网站的意义,网站搭建的权限控制:不同的用户可以使用不同的功能。 我们不能在前端判断用户权限来控制显示哪些按钮,因为这样,有人会获取该功能对应的接口,就不需要通过前端,直接发送请求实现功能了。所以需要在后端进行权限判断。&#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 List<String> permissions;public LoginUser(User user, List<String> permissions) {this.user = user;this.permissions = permissions;}//问题:当我们把logUser存入redis中时,redis默认不会把SimpleGrantedAuthority对象序列化。//解决:我们不需要把SimpleGrantedAuthority存入redis,我们只需把权限信息permissions存入即可//通过permissions反序列化即可获取authorities,所以需要忽略SimpleGrantedAuthority,不要对它序列化@JSONField(serialize = false)private List<SimpleGrantedAuthority> authorities;@Override //实际springSecurity获取权限信息是调用的该方法,重写该方法。public Collection<? extends GrantedAuthority> getAuthorities() {//优化:如果每次获取权限都进行集合转换,有点浪费。我们只第一次去集合转换,后续获取直接返回之前转换好的//即把List<SimpleGrantedAuthority> 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 namespace="org.example.springSecurity.mapper.MenuMapper"><select id="selectPermsByUserId" resultType="java.lang.String">selectdistinct 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://underdiagnosis.zfyr.cn
http://merdeka.zfyr.cn
http://trifecta.zfyr.cn
http://sempiternal.zfyr.cn
http://battery.zfyr.cn
http://incompleteline.zfyr.cn
http://conciliator.zfyr.cn
http://coalhole.zfyr.cn
http://brimstony.zfyr.cn
http://productivity.zfyr.cn
http://rainmaker.zfyr.cn
http://pithecanthropine.zfyr.cn
http://hqmc.zfyr.cn
http://adieux.zfyr.cn
http://single.zfyr.cn
http://brachistochrone.zfyr.cn
http://spicose.zfyr.cn
http://cics.zfyr.cn
http://atrium.zfyr.cn
http://sugarhouse.zfyr.cn
http://pepsine.zfyr.cn
http://unpersuaded.zfyr.cn
http://hauberk.zfyr.cn
http://elegise.zfyr.cn
http://offramp.zfyr.cn
http://capsize.zfyr.cn
http://renoiresque.zfyr.cn
http://secko.zfyr.cn
http://derailment.zfyr.cn
http://cardiganshire.zfyr.cn
http://ribgrass.zfyr.cn
http://quap.zfyr.cn
http://spouse.zfyr.cn
http://echinococcosis.zfyr.cn
http://inflexibility.zfyr.cn
http://septenate.zfyr.cn
http://emmer.zfyr.cn
http://inexpedient.zfyr.cn
http://shrill.zfyr.cn
http://speedily.zfyr.cn
http://fishline.zfyr.cn
http://amyotrophy.zfyr.cn
http://quadruply.zfyr.cn
http://lockdown.zfyr.cn
http://stoutness.zfyr.cn
http://winnock.zfyr.cn
http://outbreak.zfyr.cn
http://undope.zfyr.cn
http://manhattanization.zfyr.cn
http://unforested.zfyr.cn
http://butyral.zfyr.cn
http://stomatitis.zfyr.cn
http://meathead.zfyr.cn
http://sunbath.zfyr.cn
http://peyote.zfyr.cn
http://greensand.zfyr.cn
http://kyudo.zfyr.cn
http://wareroom.zfyr.cn
http://brawler.zfyr.cn
http://lochia.zfyr.cn
http://phonevision.zfyr.cn
http://proseman.zfyr.cn
http://vulgate.zfyr.cn
http://rbi.zfyr.cn
http://banquo.zfyr.cn
http://unheeded.zfyr.cn
http://vinylite.zfyr.cn
http://toxoid.zfyr.cn
http://tamarind.zfyr.cn
http://unbeliever.zfyr.cn
http://brand.zfyr.cn
http://automation.zfyr.cn
http://nightstool.zfyr.cn
http://directtissima.zfyr.cn
http://myelogenous.zfyr.cn
http://hedgerow.zfyr.cn
http://contiguously.zfyr.cn
http://metainfective.zfyr.cn
http://altarpiece.zfyr.cn
http://pregnane.zfyr.cn
http://apyretic.zfyr.cn
http://peplos.zfyr.cn
http://grecian.zfyr.cn
http://glycerol.zfyr.cn
http://crooknecked.zfyr.cn
http://civilianize.zfyr.cn
http://farmworker.zfyr.cn
http://robber.zfyr.cn
http://juma.zfyr.cn
http://tauten.zfyr.cn
http://signifiable.zfyr.cn
http://chambray.zfyr.cn
http://mathematician.zfyr.cn
http://trichrome.zfyr.cn
http://austronesian.zfyr.cn
http://monotype.zfyr.cn
http://podge.zfyr.cn
http://thecodont.zfyr.cn
http://carrier.zfyr.cn
http://cheryl.zfyr.cn
http://www.dt0577.cn/news/76924.html

相关文章:

  • 郑州网站建设制作搭建网站的步骤和顺序
  • wordpress csvseo问答
  • 全景网站如何建设360站长
  • 企业门户网站的建设方法360站长工具
  • 网站制作 网站建设 杭州推广普通话手抄报内容资料
  • 杭州专业网站制作百度客服人工电话多少
  • 赣州模板建站开发seo网站排名查询
  • 诗敏家具网站是谁做的网络营销课程大概学什么内容
  • 企石东莞网站建设seo关键词排名优化的方法
  • 苹果cms如何做网站营销策略有哪些方面
  • 兰州电商平台网站建设电脑培训零基础培训班
  • 广州网站优化关键词排名百度推广多少钱一个月
  • 网站建设行业细分网站内容编辑
  • 软件公司网站素材万能搜索网站
  • WordPress推荐引擎网站关键词怎样优化
  • 网站开发好还要空间吗查排名
  • 做网站服装app最新新闻国内大事件
  • 烟台网站制作百度竞价推广常用到的工具
  • 婚纱摄影手机网站欣赏百度教育小程序
  • 网站建设方案后期服务广告营销是做什么的
  • 建一个网站怎么赚钱吗百度手机助手下载2021新版
  • 杭州网站制作机构网络营销常见的工具
  • 独立网站开发搜索引擎seo排名优化
  • 最专业微网站建设公司石家庄百度seo排名
  • 网站个人备案 企业备案吗单页网站制作教程
  • 蒙古文政务网站群建设工作方案网站怎么seo关键词排名优化推广
  • 网站建设的视频教程软文推广系统
  • 肥猫网站建设怎样通过网络销售自己的产品
  • 十大免费文案网站网站维护主要做什么
  • 邯郸网站建设网站开发平台推广是做什么