开发者社区> 问答> 正文

spring security很奇怪的问题? 在配置类红使用access表达式一?400报错

.antMatchers("/ll").access("@myServiceImpl.hasPermission(request,authentication)")
    //正常
@PreAuthorize("@myServiceImpl.hasPermission(request,authentication)")
@RequestMapping("/test1")
public String test1(HttpServletRequest request) {
    return "test1";
}//报错

EL1008E: Property or field 'request' cannot be found on object of type 'org.springframework.security.access.expression.method.MethodSecurityExpressionRoot' - maybe not public or not valid?

 

这是判断逻辑;

public boolean hasPermission(HttpServletRequest request, Authentication authentication) {

   Object obj = authentication.getPrincipal();

   if (obj instanceof UserDetails) {
      UserDetails user = (UserDetails) obj;
      Collection<? extends GrantedAuthority> authorities = user.getAuthorities();
      return authorities.contains(new SimpleGrantedAuthority(request.getRequestURI()));
   }
   return false;
}

展开
收起
爱吃鱼的程序员 2020-06-05 15:01:59 979 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>已解决;需要用#来获取方法参数;如</p> 
    
    @PreAuthorize("@myServiceImpl.hasPermission(#request,#authentication)")
    2020-06-05 15:02:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多