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

高端网站建设哪家更专业顺义的网站建设公司

高端网站建设哪家更专业,顺义的网站建设公司,wordpress网站500错误,怎么做网页代码文章目录 1、配置用户权限2、针对URL授权3、针对方法的授权 1、配置用户权限 继续上一章#xff0c;给在内存中创建两个用户配置权限。配置权限有两种方式#xff1a; 配置roles配置authorities //哪个写在后面哪个起作用 //角色变成权限后会加一个ROLE_前缀#xff0c;比… 文章目录 1、配置用户权限2、针对URL授权3、针对方法的授权 1、配置用户权限 继续上一章给在内存中创建两个用户配置权限。配置权限有两种方式 配置roles配置authorities //哪个写在后面哪个起作用 //角色变成权限后会加一个ROLE_前缀比如ROLE_teacher UserDetails user2 User.builder().username(thomas).password(passwordEncoder().encode(123456)).authorities(teacher:add,teacher:update).roles(teacher).build();UserDetails user2 User.builder().username(thomas).password(passwordEncoder().encode(123456)).roles(teacher).authorities(teacher:add,teacher:update).build(); 以上两种写法顺序不同获取当前登录用户时得到的权限值也不一样。总结就是 如果给一个用户同时配置roles和authorities哪个方法后面调用哪个起作用配置roles时权限名会加上ROLE_ 当然从代码层来说角色和权限并没太大区别并特别是在Spring Security中。 2、针对URL授权 未做授权时默认登录成功的用户可以访问所有资源调任意一个接口但有的接口只能允许管理员调用因此这里需要再实现授权功能。先看针对URL授权即哪些权限可以访问哪些URL。新建配置类MyWebSecurityConfig继承抽象类WebSecurityConfigurerAdapter重写configure(HttpSecurity http)方法 Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests() //授权请求.anyRequest() //任何请求.denyAll(); //拒绝所有请求访问//.permitAll(); //允许所有请求} }放开登录认证页面 Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests() //授权请求.anyRequest() //任何请求.denyAll(); //拒绝所有请求访问//.permitAll(); //允许所有请求http.formLogin().permitAll(); //放开表单登录} }针对不同的url要求拥有不同的权限才能访问实现如下 Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().mvcMatchers(/student/**).hasAnyAuthority(ROLE_student, ROLE_teacher) //有任一权限就能访问上面的url形参是可变长字符串.mvcMatchers(/teacher/**).hasAuthority(ROLE_teacher) //必须有这个权限才能访问上面的url.anyRequest() //任何请求.authenticated(); //都需要登录即那些没有单独设置权限的url仅需登录就能访问http.formLogin().permitAll();} }关于URL匹配可选框架中的以下方法 mvcMatchers() 优先regexMatchers()antMatchers() 关于校验是否有对应的权限框架中的方法可选 hasAuthority() 是否有单个权限hasRole()hasAnyAuthority() 是否有其中任一个权限hasAnyRole() 还可以.access()写表达式 .mvcMatchers(/admin/**) .access(hasRole(teacher) or hasAuthority(admin:query)) //里面用单引号省的转义3、针对方法的授权 上面是URL级别的授权接下来进行方法级别的权限控制。先写一个增删改查的简单代码方便后面测试。 测试素材代码 //新建教师接口 public interface TeacherService {String add();String update();String delete();String query(); } //实现接口 Service Slf4j public class TeacherServiceImpl implements TeacherService {Overridepublic String add() {log.info(添加教师成功);return 添加教师成功;}Overridepublic String update() {log.info(修改教师成功);return 修改教师成功;}Overridepublic String delete() {log.info(删除教师成功);return 删除教师成功;}Overridepublic String query() {log.info(查询教师成功);return 查询教师成功;} } 简单补充下controller RestController RequestMapping(/teacher) public class TeacherController {Resourceprivate TeacherService teacherService;GetMapping(/query)public String queryInfo() {return teacherService.query();}GetMapping(/add)public String addInfo() {return teacherService.add();}GetMapping(/update)public String updateInfo() {return teacherService.update();}GetMapping(/delete)public String deleteInfo() {return teacherService.delete();} } 配置类中新建三个测试用户在内存中 Configuration public class MySecurityUserConfig {Beanpublic UserDetailsService userDetailService() {UserDetails user1 User.builder().username(liu).password(passwordEncoder().encode(123456)).roles(student).build();UserDetails user2 User.builder().username(Mr.liu).password(passwordEncoder().encode(123456)).roles(teacher).build();UserDetails user3 User.builder().username(admin).password(passwordEncoder().encode(123456)).authorities(teacher:add, teacher:update).build();//创建两个用户InMemoryUserDetailsManager userDetailsManager new InMemoryUserDetailsManager();userDetailsManager.createUser(user1);userDetailsManager.createUser(user2);return userDetailsManager;}/** 从 Spring5 开始强制要求密码要加密* return*/Beanpublic PasswordEncoder passwordEncoder(){//使用加密算法对密码进行加密return new BCryptPasswordEncoder();}} Web安全配置适配器类 Configuration public class WebSecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {//任何访问均需要认证http.authorizeRequests().anyRequest().authenticated();http.formLogin().permitAll();} } 进行方法级别的控制 首先加上启动全局方法安全的注解 EnableGlobalMethodSecurity(prePostEnabled true) //Configuration //EnableGlobalMethodSecurity注解中有Configuration注解所以这里注掉了就 EnableGlobalMethodSecurity(prePostEnabled true) public class WebSecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {//任何访问均需要认证http.authorizeRequests().anyRequest().authenticated();//登录放行http.formLogin().permitAll();} } EnableGlobalMethodSecurity(prePostEnabled true)中的prePostEnabled是预授权和后授权预授权即访问前判断有无权限后授权则是方法执行完以后才判断是否有权限后授权的使用场景比较少。接下来修改要控制访问的方法使用 前置授权注解PreAuthorize Service Slf4j public class TeacherServiceImpl implements TeacherService {OverridePreAuthorize(hasAuthority(teacher:add) OR hasRole(teacher))public String add() {log.info(添加教师成功);return 添加教师成功;}OverridePreAuthorize(hasAuthority(teacher:update))public String update() {log.info(修改教师成功);return 修改教师成功;}OverridePreAuthorize(hasAuthority(teacher:delete))public String delete() {log.info(删除教师成功);return 删除教师成功;}OverridePreAuthorize(hasRole(teacher))public String query() {log.info(查询教师成功);return 查询教师成功;} } 此时登录有不同权限的不同角色其只能访问对应有权限的方法。 注意这里控制的是对方法的访问仅仅是限制对方法的访问。 GetMapping(/delete)public String deleteInfo() {return teacherService.delete();}改为 GetMapping(/delete)public String deleteInfo() {int a 10log.info(进入了TeacherControllera{} , a);return teacherService.delete();}登录学生账户访问delete接口此时结果仍然403但控制台可以看到在到达被限制权限的方法前的代码是可以访问的 当然PreAuthorize注解也可以写在Controller中的方法上此时上面的int a 10自然就访问不到了。 小总结
http://www.hyszgw.com/news/89437.html

相关文章:

  • int域名网站有哪些如何做网上销售网站
  • 网站seo分析视觉设计作品集
  • 创业初期要建立公司的网站吗网站制作视频教程下载百度云
  • 桃城区网站制作公司静态网页html模板
  • 网站建设与运营财务报表排名推广网站
  • 上海想找人设计网站竞猜网站模板
  • 做钓鱼网站教程蒙自建设网站
  • 姜堰 做网站莱州网站设计
  • 小本本教你做网站中山网站建设文化价位
  • 网站建设实训教程网站建设的投资预算怎么写
  • 泰安网站建设排行商业网站
  • 邢台网站网站建设那些网站可以做宣传
  • 网站免费建站o优化网站内容的方法
  • 河南省台前县建设局网站58同城最新招聘信息今天
  • 硅橡胶东莞网站建设阿里买域名 电脑做网站
  • 资料网站模板淘宝客网站建设方案书
  • 慈溪网站建设慈溪阿里云做的网站空间
  • 整站优化费用wordpress 获取当前id
  • 河南省网站备案深圳vi设计公司排名
  • thinkphp网站开发东营网站优化
  • 做网站的总要求上门怎样做网络推广效果好视频
  • 河北斯皮尔网站建设wordpress 慢途网
  • 企业型商务网站制作广告设计公司有哪些渠道通路
  • 河南建设工程协会网站哪个网站原创文章
  • 网站制作风格响应式高端网站
  • 免费网站新域名营销软文
  • 网站做好怎么开始做推广东阳建设局网站
  • 食品经营许可证如何给网站做seo优化
  • 金华网站建设建设设计网站创业网项目招商
  • 乐陵网站开发网站做关键词库的作用