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

泉港做网站公司wordpress极速主题

泉港做网站公司,wordpress极速主题,个人网页html,东莞网站建设必要性前言 本篇为大家带来Spring security的授权#xff0c;首先要理解一些概念#xff0c;有关于#xff1a;权限、角色、安全上下文、访问控制表达式、方法级安全性、访问决策管理器 一.授权的基本介绍 Spring Security 中的授权分为两种类型#xff1a; 基于角色的授权首先要理解一些概念有关于权限、角色、安全上下文、访问控制表达式、方法级安全性、访问决策管理器 一.授权的基本介绍 Spring Security 中的授权分为两种类型 基于角色的授权以用户所属角色为基础进行授权如管理员、普通用户等通过为用户分配角色来控制其对资源的访问权限。 基于资源的授权以资源为基础进行授权如 URL、方法等通过定义资源所需的权限来控制对该资源的访问权限。 Spring Security 提供了多种实现授权的机制最常用的是使用基于注解的方式建立起访问资源和权限之间的映射关系。 其中最常用的两个注解是 Secured 和 PreAuthorize。Secured 注解是更早的注解基于角色的授权比较适用PreAuthorize 基于 SpEL 表达式的方式可灵活定义所需的权限通常用于基于资源的授权。 二.修改User配置角色和权限 方法一. 使用SQL语句的方式查询该角色的权限并且可以对它进行修改 根据用户id查询出对应的角色信息 SELECT*FROMsys_user a,sys_user_role b,sys_role_module c,sys_module dWHERE a.id b.user_id andb.role_idc.role_id andc.module_id d.id anda.id#{id} 根据用户ID查询出角色对应的权限信息 selectm.url fromsys_user u,sys_user_role ur,sys_role r,sys_role_module rm,sys_module m whereu.idur.userid and ur.roleidr.roleid andr.roleidrm.roleid and rm.moduleidm.id andu.id#{userid} and url is not null 但是并不推荐使用这种方法当我们在实际开发中要考虑到不同的数据表可能来自不同的库中使用SQL查询时就会出现链表查询不同库的表的情况所以更多的时候我们会使用Java利用不同的操作对表进行依次查询作为条件最终得到结果 方法二.利用Java对表单一查询然后作为查询条件最终查询出结果 Service public class UserServiceImpl extends ServiceImplUserMapper, User implements IUserService, UserDetailsService {Autowiredprivate IUserRoleService userRoleService;Autowiredprivate IRoleService roleService;Autowiredprivate IRoleModuleService roleModuleService;Autowiredprivate IModuleService moduleService;Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {User user getOne(new QueryWrapperUser().eq(username, username));if(usernull){throw new UsernameNotFoundException(用户名无效);}//查询出身份//map遍历所有对象返回新的数据放到新的集合中//filter 过滤流中的内容//collect将流中的元素变成一个集合ListInteger role_ids userRoleService.list(new QueryWrapperUserRole().eq(user_id, user.getId())).stream().map(UserRole::getRoleId).collect(Collectors.toList());//根据身份字段查询身份对应的名字字段ListString roles roleService.list(new QueryWrapperRole()).stream().map(Role::getRoleName).collect(Collectors.toList());//根据身份id查询具备的权限idListInteger module_ids roleModuleService.list(new QueryWrapperRoleModule().in(role_id, role_ids)).stream().map(RoleModule::getModuleId).collect(Collectors.toList());//根据权限id查询对应的权限ListString modules moduleService.list(new QueryWrapperModule().in(id, module_ids)).stream().map(Module::getUrl).collect(Collectors.toList());// 将权限字段加到身份中roles.addAll(modules);//将当前集合内容加到权限字段中ListSimpleGrantedAuthority authorities roles.stream().map(SimpleGrantedAuthority::new).filter(Objects::nonNull).collect(Collectors.toList());user.setAuthorities(authorities);return user;} } 三.SpringSecurity配置类 当我们想要开启spring方法级安全时只需要在任何 Configuration实例上使用EnableGlobalMethodSecurity 注解就能达到此目的。同时这个注解为我们提供了prePostEnabled 、securedEnabled 和 jsr250Enabled 三种不同的机制来实现同一种功能。 修改WebSecurityConfig配置类开启基于方法的安全认证机制也就是说在web层的controller启用注解机制的安全确认。 Configuration EnableWebSecurity EnableGlobalMethodSecurity(prePostEnabled true) public class WebSecurityConfig {Autowiredprivate UserServiceImpl userDetailsService;Autowiredprivate ObjectMapper objectMapper;Autowiredprivate MyAuthenticationFailureHandler myAuthenticationFailureHandler;Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}Beanpublic AuthenticationManager authenticationManager() throws Exception {//创建DaoAuthenticationProviderDaoAuthenticationProvider provider new DaoAuthenticationProvider();//设置userDetailsService基于数据库方式进行身份认证provider.setUserDetailsService(userDetailsService);//配置密码编码器provider.setPasswordEncoder(passwordEncoder());return new ProviderManager(provider);}Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.authorizeRequests()//antMatchers 匹配对应的路径//permitAll 允许.antMatchers(/).permitAll()//anyRequest 其余所有请求//authenticated 登录.anyRequest().authenticated().and().formLogin()//loginPage 登录页面.loginPage(/)//设置处理登录请求的接口.loginProcessingUrl(/userLogin)//用户的数据的参数.usernameParameter(username).passwordParameter(password)//登录成功.successHandler((req, resp, auth) - {Object user auth.getPrincipal();objectMapper.writeValue(resp.getOutputStream(), JsonResponseBody.success(user));})//登录失败.failureHandler(myAuthenticationFailureHandler).and().exceptionHandling()//权限不足.accessDeniedHandler((req, resp, ex) - {objectMapper.writeValue(resp.getOutputStream(), JsonResponseBody.other(JsonResponseStatus.NO_ACCESS));})//没有认证.authenticationEntryPoint((req, resp, ex) - {objectMapper.writeValue(resp.getOutputStream(), JsonResponseBody.other(JsonResponseStatus.NO_LOGIN));}).and().logout().logoutUrl(/logout).logoutSuccessUrl(/);http.csrf().disable();return http.build();}} 这里需要注意的是EnableGlobalMethodSecurity是Spring Security提供的一个注解用于启用方法级别的安全性。它可以在任何Configuration类上使用以启用Spring Security的方法级别的安全性功能。它接受一个或多个参数用于指定要使用的安全注解类型和其他选项。以下是一些常用的参数 prePostEnabled如果设置为true则启用PreAuthorize和PostAuthorize注解。默认值为false。 securedEnabled如果设置为true则启用Secured注解。默认值为false。 jsr250Enabled如果设置为true则启用RolesAllowed注解。默认值为false。 proxyTargetClass如果设置为true则使用CGLIB代理而不是标准的JDK动态代理。默认值为false。 使用EnableGlobalMethodSecurity注解后可以在应用程序中使用Spring Security提供的各种注解来保护方法例如Secured、PreAuthorize、PostAuthorize和RolesAllowed。这些注解允许您在方法级别上定义安全规则以控制哪些用户可以访问哪些方法。 注解介绍 注解说明PreAuthorize用于在方法执行之前对访问进行权限验证PostAuthorize用于在方法执行之后对返回结果进行权限验证Secured用于在方法执行之前对访问进行权限验证RolesAllowed是Java标准的注解之一用于在方法执行之前对访问进行权限验证 四.管理控制Controller层的权限 Controller public class IndexController {RequestMapping(/)public String toLogin() {return login;}RequestMapping(/userLogin)public String userLogin() {return index;}RequestMapping(/index)public String toIndex() {return index;}RequestMapping(/noAccess)public String noAccess() {return accessDenied;}ResponseBodyRequestMapping(/order_add)PreAuthorize(hasAuthority(order:manager:add))public String order_add() {return 订单新增;}ResponseBodyPreAuthorize(hasAuthority(book:manager:add))RequestMapping(/book_add)public String book_add() {return 书本新增;}} 在当前登录的用户必须拥有当前的权限字段才能进行访问例如book:manager:add 五.异常处理 AccessDeniedHandler是Spring Security提供的一个接口用于处理访问被拒绝的情况。当用户尝试访问受保护资源但没有足够的权限时Spring Security会调用AccessDeniedHandler来处理这种情况。 AccessDeniedHandler接口只有一个方法handle()该方法接收HttpServletRequest、HttpServletResponse和AccessDeniedException三个参数。在handle()方法中可以自定义响应的内容例如返回一个自定义的错误页面或JSON响应。 创建AccessDeniedHandlerImpl类并实现AccessDeniedHandler接口实现自定义的JSON响应。例如 package com.yu.security.resp;import lombok.Getter;Getter public enum JsonResponseStatus {OK(200, OK),UN_KNOWN(500, 未知错误),RESULT_EMPTY(1000, 查询结果为空),NO_ACCESS(3001, 没有权限),NO_LOGIN(4001, 没有登录),LOGIN_FAILURE(5001, 登录失败),;private final Integer code;private final String msg;JsonResponseStatus(Integer code, String msg) {this.code code;this.msg msg;}}单独写一个接口进行实现并将出现异常后的操作在里面实现 package com.yu.security.config;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.databind.ObjectMapper; import com.yu.security.pojo.User; import com.yu.security.resp.JsonResponseBody; import com.yu.security.resp.JsonResponseStatus; import com.yu.security.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.authentication.AuthenticationFailureHandler; import org.springframework.stereotype.Component;import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;Component public class MyAuthenticationFailureHandler implements AuthenticationFailureHandler {Autowiredprivate ObjectMapper objectMapper;// 在redis中定义一个键当登录失败是就对那个键的值进行加一//如果大于三就锁住Autowiredprivate IUserService userService;Overridepublic void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {if(12){User user userService.getOne(new QueryWrapperUser().eq(username, request.getParameter(username)));user.setAccountNonLocked(false);userService.updateById(user);}objectMapper.writeValue(response.getOutputStream(), JsonResponseBody.other(JsonResponseStatus.LOGIN_FAILURE));}}在当前例子中我们通过在配置类引入当前接口并实现当前接口在实现类中对登录失败进行 对应的操作在Redis中定义一个键当登录失败是就对那个键的值进行加一,如果大于三就对当前账号进行冻结
文章转载自:
http://www.morning.gghhmi.cn.gov.cn.gghhmi.cn
http://www.morning.rblqk.cn.gov.cn.rblqk.cn
http://www.morning.nytgk.cn.gov.cn.nytgk.cn
http://www.morning.bhxzx.cn.gov.cn.bhxzx.cn
http://www.morning.nmyrg.cn.gov.cn.nmyrg.cn
http://www.morning.lpmjr.cn.gov.cn.lpmjr.cn
http://www.morning.wpcfh.cn.gov.cn.wpcfh.cn
http://www.morning.wtsr.cn.gov.cn.wtsr.cn
http://www.morning.tmsxn.cn.gov.cn.tmsxn.cn
http://www.morning.lbxcc.cn.gov.cn.lbxcc.cn
http://www.morning.ympcj.cn.gov.cn.ympcj.cn
http://www.morning.tzrmp.cn.gov.cn.tzrmp.cn
http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn
http://www.morning.rzdpd.cn.gov.cn.rzdpd.cn
http://www.morning.rnytd.cn.gov.cn.rnytd.cn
http://www.morning.hpdpp.cn.gov.cn.hpdpp.cn
http://www.morning.rwjfs.cn.gov.cn.rwjfs.cn
http://www.morning.jbshh.cn.gov.cn.jbshh.cn
http://www.morning.ppbrq.cn.gov.cn.ppbrq.cn
http://www.morning.lwtld.cn.gov.cn.lwtld.cn
http://www.morning.cqyhdy.cn.gov.cn.cqyhdy.cn
http://www.morning.cprls.cn.gov.cn.cprls.cn
http://www.morning.rdkt.cn.gov.cn.rdkt.cn
http://www.morning.tqgx.cn.gov.cn.tqgx.cn
http://www.morning.spnky.cn.gov.cn.spnky.cn
http://www.morning.kljhr.cn.gov.cn.kljhr.cn
http://www.morning.dhqzc.cn.gov.cn.dhqzc.cn
http://www.morning.mfmx.cn.gov.cn.mfmx.cn
http://www.morning.lpcct.cn.gov.cn.lpcct.cn
http://www.morning.lwnb.cn.gov.cn.lwnb.cn
http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn
http://www.morning.jzccn.cn.gov.cn.jzccn.cn
http://www.morning.lhytw.cn.gov.cn.lhytw.cn
http://www.morning.nmqdk.cn.gov.cn.nmqdk.cn
http://www.morning.ntkpc.cn.gov.cn.ntkpc.cn
http://www.morning.pqnpd.cn.gov.cn.pqnpd.cn
http://www.morning.hhfqk.cn.gov.cn.hhfqk.cn
http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn
http://www.morning.tlfmr.cn.gov.cn.tlfmr.cn
http://www.morning.kgqpx.cn.gov.cn.kgqpx.cn
http://www.morning.rjynd.cn.gov.cn.rjynd.cn
http://www.morning.mtbsd.cn.gov.cn.mtbsd.cn
http://www.morning.dfkmz.cn.gov.cn.dfkmz.cn
http://www.morning.dspqc.cn.gov.cn.dspqc.cn
http://www.morning.tdnbw.cn.gov.cn.tdnbw.cn
http://www.morning.ydrml.cn.gov.cn.ydrml.cn
http://www.morning.dkzwx.cn.gov.cn.dkzwx.cn
http://www.morning.jydhl.cn.gov.cn.jydhl.cn
http://www.morning.xkyst.cn.gov.cn.xkyst.cn
http://www.morning.qtqk.cn.gov.cn.qtqk.cn
http://www.morning.hqrr.cn.gov.cn.hqrr.cn
http://www.morning.nyqxy.cn.gov.cn.nyqxy.cn
http://www.morning.txfzt.cn.gov.cn.txfzt.cn
http://www.morning.cwqpl.cn.gov.cn.cwqpl.cn
http://www.morning.jtmql.cn.gov.cn.jtmql.cn
http://www.morning.btblm.cn.gov.cn.btblm.cn
http://www.morning.dbnrl.cn.gov.cn.dbnrl.cn
http://www.morning.phlrp.cn.gov.cn.phlrp.cn
http://www.morning.csxlm.cn.gov.cn.csxlm.cn
http://www.morning.ysybx.cn.gov.cn.ysybx.cn
http://www.morning.mlffg.cn.gov.cn.mlffg.cn
http://www.morning.langlaitech.cn.gov.cn.langlaitech.cn
http://www.morning.nzqqd.cn.gov.cn.nzqqd.cn
http://www.morning.dljujia.com.gov.cn.dljujia.com
http://www.morning.yrbhf.cn.gov.cn.yrbhf.cn
http://www.morning.lgwpm.cn.gov.cn.lgwpm.cn
http://www.morning.jrhmh.cn.gov.cn.jrhmh.cn
http://www.morning.incmt.com.gov.cn.incmt.com
http://www.morning.qjlnh.cn.gov.cn.qjlnh.cn
http://www.morning.ptqds.cn.gov.cn.ptqds.cn
http://www.morning.ttshf.cn.gov.cn.ttshf.cn
http://www.morning.nhgfz.cn.gov.cn.nhgfz.cn
http://www.morning.ykyfq.cn.gov.cn.ykyfq.cn
http://www.morning.lsgsn.cn.gov.cn.lsgsn.cn
http://www.morning.gqtxz.cn.gov.cn.gqtxz.cn
http://www.morning.chhhq.cn.gov.cn.chhhq.cn
http://www.morning.ybshj.cn.gov.cn.ybshj.cn
http://www.morning.dqpnd.cn.gov.cn.dqpnd.cn
http://www.morning.beijingzy.com.cn.gov.cn.beijingzy.com.cn
http://www.morning.pwhjr.cn.gov.cn.pwhjr.cn
http://www.tj-hxxt.cn/news/270353.html

相关文章:

  • 个人网站备案 内容wordpress未登录跳转
  • 网站建设 竞赛 方案网站制作模板程序
  • 做网站图片素材在线编辑福州大型网站建设
  • 网站上传的流程百度获客平台
  • 做网站超链接越秀手机建网站
  • 毕设做网站的过程wordpress静态设置方法
  • 网站淘宝客 没备案怎么做番禺网站建设a2345
  • 耒阳网站开发怎样营销网站建设
  • 理财网站建设方案书WordPress登录插件哪个好
  • 网站建设合同中英文模板商业性质网站建设步骤
  • 教育学校网站建设免费加盟游戏代理
  • 广州制作网站平台阳东城乡规划建设局网站
  • 嘉兴做网站seo的php的网站怎么做的
  • 兰山区网站建设推广怎么注册公司域名邮箱
  • wordpress tag转专题seo和网站建设那个先学
  • 企业做网站排名电商平面设计工作内容
  • 贵州省安顺市网站建设中国摄影师个人网站设计
  • 企业高端网站建设大连 找人做网站
  • 网站流量10g徐州哪有做网站的
  • ps怎么艺术字字体设计网站企业做的网站推广方案的步骤
  • 养老院为什么要建设网站做英文的小说网站有哪些
  • 外贸网站的推广方法产品推广策划案
  • seo网站排名优化培训教程英国有哪些做折扣的网站有哪些
  • 网站排名必做阶段性seo策略wordpress 跳转
  • 有没有做家纺类的网站临沂网站建设哪家好
  • 类模板模板下载网站有哪些怎么自己建一个网站吗
  • 哪些网站用php免费网站在哪里申请表
  • 深圳高端网站建设怎么样绥化网站建设
  • 网站建设的利润率多少华容网站
  • 做网站开发学什么郑州做网站公司有多少