org.springframework.security.access.expression.ExpressionUtils类的使用及代码示例

x33g5p2x  于2022-01-19 转载在 其他  
字(11.5k)|赞(0)|评价(0)|浏览(176)

本文整理了Java中org.springframework.security.access.expression.ExpressionUtils类的一些代码示例,展示了ExpressionUtils类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ExpressionUtils类的具体详情如下:
包路径:org.springframework.security.access.expression.ExpressionUtils
类名称:ExpressionUtils

ExpressionUtils介绍

暂无

代码示例

代码示例来源:origin: spring-projects/spring-security

public int vote(Authentication authentication, Message<T> message,
    Collection<ConfigAttribute> attributes) {
  assert authentication != null;
  assert message != null;
  assert attributes != null;
  MessageExpressionConfigAttribute attr = findConfigAttribute(attributes);
  if (attr == null) {
    return ACCESS_ABSTAIN;
  }
  EvaluationContext ctx = expressionHandler.createEvaluationContext(authentication,
      message);
  return ExpressionUtils.evaluateAsBoolean(attr.getAuthorizeExpression(), ctx) ? ACCESS_GRANTED
      : ACCESS_DENIED;
}

代码示例来源:origin: spring-projects/spring-security

rootObject.setFilterObject(filterObject);
  if (ExpressionUtils.evaluateAsBoolean(filterExpression, ctx)) {
    retainList.add(filterObject);
  rootObject.setFilterObject(o);
  if (ExpressionUtils.evaluateAsBoolean(filterExpression, ctx)) {
    retainList.add(o);
  return ExpressionUtils.evaluateAsBoolean(filterExpression, ctx);
})
    .onClose(original::close);

代码示例来源:origin: spring-projects/spring-security

&& !ExpressionUtils.evaluateAsBoolean(postAuthorize, ctx)) {
if (logger.isDebugEnabled()) {
  logger.debug("PostAuthorize expression rejected access");

代码示例来源:origin: org.springframework.security/spring-security-core

rootObject.setFilterObject(filterObject);
if (ExpressionUtils.evaluateAsBoolean(filterExpression, ctx)) {
  retainList.add(filterObject);
rootObject.setFilterObject(o);
if (ExpressionUtils.evaluateAsBoolean(filterExpression, ctx)) {
  retainList.add(o);

代码示例来源:origin: org.springframework.security/spring-security-core

&& !ExpressionUtils.evaluateAsBoolean(postAuthorize, ctx)) {
if (logger.isDebugEnabled()) {
  logger.debug("PostAuthorize expression rejected access");

代码示例来源:origin: spring-projects/spring-security

@Test
public void trustResolverPopulated() {
  EvaluationContext context = handler.createEvaluationContext(authentication,
      message);
  Expression expression = handler.getExpressionParser().parseExpression(
      "authenticated");
  assertThat(ExpressionUtils.evaluateAsBoolean(expression, context)).isFalse();
}

代码示例来源:origin: spring-projects/spring-security

@Test
public void hasPermissionOnDomainObjectWorksWithIntegerExpressions() throws Exception {
  final Object dummyDomainObject = new Object();
  ctx.setVariable("domainObject", dummyDomainObject);
  final PermissionEvaluator pe = mock(PermissionEvaluator.class);
  root.setPermissionEvaluator(pe);
  when(pe.hasPermission(eq(user), eq(dummyDomainObject), any(Integer.class)))
      .thenReturn(true).thenReturn(true).thenReturn(false);
  Expression e = parser.parseExpression("hasPermission(#domainObject, 0xA)");
  // evaluator returns true
  assertThat(ExpressionUtils.evaluateAsBoolean(e, ctx)).isTrue();
  e = parser.parseExpression("hasPermission(#domainObject, 10)");
  // evaluator returns true
  assertThat(ExpressionUtils.evaluateAsBoolean(e, ctx)).isTrue();
  e = parser.parseExpression("hasPermission(#domainObject, 0xFF)");
  // evaluator returns false, make sure return value matches
  assertThat(ExpressionUtils.evaluateAsBoolean(e, ctx)).isFalse();
}

代码示例来源:origin: spring-projects/spring-security

@Test
public void canCallMethodsOnVariables() throws Exception {
  ctx.setVariable("var", "somestring");
  Expression e = parser.parseExpression("#var.length() == 10");
  assertThat(ExpressionUtils.evaluateAsBoolean(e, ctx)).isTrue();
}

代码示例来源:origin: spring-projects/spring-security

@Test
public void trustResolverCustom() {
  handler.setTrustResolver(trustResolver);
  EvaluationContext context = handler.createEvaluationContext(authentication,
      message);
  Expression expression = handler.getExpressionParser().parseExpression(
      "authenticated");
  when(trustResolver.isAnonymous(authentication)).thenReturn(false);
  assertThat(ExpressionUtils.evaluateAsBoolean(expression, context)).isTrue();
}

代码示例来源:origin: spring-projects/spring-security

@Test
  public void permissionEvaluator() {
    handler.setPermissionEvaluator(permissionEvaluator);
    EvaluationContext context = handler.createEvaluationContext(authentication,
        message);
    Expression expression = handler.getExpressionParser().parseExpression(
        "hasPermission(message, 'read')");
    when(permissionEvaluator.hasPermission(authentication, message, "read"))
        .thenReturn(true);

    assertThat(ExpressionUtils.evaluateAsBoolean(expression, context)).isTrue();
  }
}

代码示例来源:origin: spring-projects/spring-security

@Test
  public void hasPermissionWorksWithThisObject() throws Exception {
    Object targetObject = new Object() {
      public String getX() {
        return "x";
      }
    };
    root.setThis(targetObject);
    Integer i = 2;
    PermissionEvaluator pe = mock(PermissionEvaluator.class);
    root.setPermissionEvaluator(pe);
    when(pe.hasPermission(user, targetObject, i)).thenReturn(true).thenReturn(false);
    when(pe.hasPermission(user, "x", i)).thenReturn(true);

    Expression e = parser.parseExpression("hasPermission(this, 2)");
    assertThat(ExpressionUtils.evaluateAsBoolean(e, ctx)).isTrue();
    e = parser.parseExpression("hasPermission(this, 2)");
    assertThat(ExpressionUtils.evaluateAsBoolean(e, ctx)).isFalse();

    e = parser.parseExpression("hasPermission(this.x, 2)");
    assertThat(ExpressionUtils.evaluateAsBoolean(e, ctx)).isTrue();
  }
}

代码示例来源:origin: spring-projects/spring-security

public boolean before(Authentication authentication, MethodInvocation mi,
    PreInvocationAttribute attr) {
  PreInvocationExpressionAttribute preAttr = (PreInvocationExpressionAttribute) attr;
  EvaluationContext ctx = expressionHandler.createEvaluationContext(authentication,
      mi);
  Expression preFilter = preAttr.getFilterExpression();
  Expression preAuthorize = preAttr.getAuthorizeExpression();
  if (preFilter != null) {
    Object filterTarget = findFilterTarget(preAttr.getFilterTarget(), ctx, mi);
    expressionHandler.filter(filterTarget, preFilter, ctx);
  }
  if (preAuthorize == null) {
    return true;
  }
  return ExpressionUtils.evaluateAsBoolean(preAuthorize, ctx);
}

代码示例来源:origin: spring-projects/spring-security

@Test
public void roleHierarchy() {
  authentication = new TestingAuthenticationToken("admin", "pass", "ROLE_ADMIN");
  RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
  roleHierarchy.setHierarchy("ROLE_ADMIN > ROLE_USER");
  handler.setRoleHierarchy(roleHierarchy);
  EvaluationContext context = handler.createEvaluationContext(authentication,
      message);
  Expression expression = handler.getExpressionParser().parseExpression(
      "hasRole('ROLE_USER')");
  assertThat(ExpressionUtils.evaluateAsBoolean(expression, context)).isTrue();
}

代码示例来源:origin: org.springframework.security/spring-security-core

public boolean before(Authentication authentication, MethodInvocation mi,
    PreInvocationAttribute attr) {
  PreInvocationExpressionAttribute preAttr = (PreInvocationExpressionAttribute) attr;
  EvaluationContext ctx = expressionHandler.createEvaluationContext(authentication,
      mi);
  Expression preFilter = preAttr.getFilterExpression();
  Expression preAuthorize = preAttr.getAuthorizeExpression();
  if (preFilter != null) {
    Object filterTarget = findFilterTarget(preAttr.getFilterTarget(), ctx, mi);
    expressionHandler.filter(filterTarget, preFilter, ctx);
  }
  if (preAuthorize == null) {
    return true;
  }
  return ExpressionUtils.evaluateAsBoolean(preAuthorize, ctx);
}

代码示例来源:origin: org.bitbucket.risu8/hibernate

@Override
  public boolean isValid(Serializable value, ConstraintValidatorContext context) {
    if (value == null) {
      return true;
    }
    try {
      HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
      ExpressionUtils.evaluateAsBoolean(expressionHandler.getExpressionParser().parseExpression(value.toString()), expressionHandler.createEvaluationContext(SecurityContextHolder.getContext().getAuthentication(), new FilterInvocation(request.getServletPath(), request.getMethod())));
    } catch (Exception e) {
      return false;
    }
    return true;
  }
}

代码示例来源:origin: org.springframework.security/spring-security-taglibs

/**
 * Make an authorization decision based on a Spring EL expression. See the
 * "Expression-Based Access Control" chapter in Spring Security for details on what
 * expressions can be used.
 *
 * @return the result of the authorization decision
 * @throws IOException
 */
public boolean authorizeUsingAccessExpression() throws IOException {
  if (SecurityContextHolder.getContext().getAuthentication() == null) {
    return false;
  }
  SecurityExpressionHandler<FilterInvocation> handler = getExpressionHandler();
  Expression accessExpression;
  try {
    accessExpression = handler.getExpressionParser().parseExpression(getAccess());
  }
  catch (ParseException e) {
    IOException ioException = new IOException();
    ioException.initCause(e);
    throw ioException;
  }
  return ExpressionUtils.evaluateAsBoolean(accessExpression,
      createExpressionEvaluationContext(handler));
}

代码示例来源:origin: org.springframework.statemachine/spring-statemachine-core

@Override
public int vote(Authentication authentication, Transition<?, ?> object, Collection<ConfigAttribute> attributes) {
  TransitionExpressionConfigAttribute teca = findConfigAttribute(attributes);
  if (teca == null) {
    return ACCESS_ABSTAIN;
  }
  EvaluationContext ctx = expressionHandler.createEvaluationContext(authentication, object);
  return ExpressionUtils.evaluateAsBoolean(teca.getAuthorizeExpression(), ctx) ? ACCESS_GRANTED : ACCESS_DENIED;
}

代码示例来源:origin: apache/servicemix-bundles

/**
 * Make an authorization decision based on a Spring EL expression. See the
 * "Expression-Based Access Control" chapter in Spring Security for details on what
 * expressions can be used.
 *
 * @return the result of the authorization decision
 * @throws IOException
 */
public boolean authorizeUsingAccessExpression() throws IOException {
  if (SecurityContextHolder.getContext().getAuthentication() == null) {
    return false;
  }
  SecurityExpressionHandler<FilterInvocation> handler = getExpressionHandler();
  Expression accessExpression;
  try {
    accessExpression = handler.getExpressionParser().parseExpression(getAccess());
  }
  catch (ParseException e) {
    IOException ioException = new IOException();
    ioException.initCause(e);
    throw ioException;
  }
  return ExpressionUtils.evaluateAsBoolean(accessExpression,
      createExpressionEvaluationContext(handler));
}

代码示例来源:origin: com.ibeetl/beetl

@Override
  public Object call(Object[] paras, Context ctx) {
    // 如果没有安全上下文,固定返回true
    SecurityContext securityContext = SecurityContextHolder.getContext();
    if (securityContext == null) {
      return true;
    }
    // 用户未登录
    Authentication authentication = securityContext.getAuthentication();
    if (authentication == null) {
      authentication = new AnonymousAuthenticationToken(UUID.randomUUID().toString(), "anonymous",
          Collections.<GrantedAuthority> singletonList(new SimpleGrantedAuthority("ROLE_ANONYMOUS")));
    }
    // 未提供表达式,返回true
    if ((paras.length == 0) || (paras[0] == null) || (!(paras[0] instanceof String))) {
      return true;
    }
    String access = (String) paras[0];
    // 否则执行权限表达式进行认证
    WebVariable servlet = (WebVariable) ctx.getGlobal("servlet");
    Expression accessExpression = expressionHandler.getExpressionParser().parseExpression(access);
    return ExpressionUtils.evaluateAsBoolean(accessExpression, expressionHandler.createEvaluationContext(authentication,
        new FilterInvocation(servlet.getRequest(), servlet.getResponse(), AccessExpressionIfFunction.DUMMY_CHAIN)));
  }
}

代码示例来源:origin: apache/servicemix-bundles

public int vote(Authentication authentication, Message<T> message,
    Collection<ConfigAttribute> attributes) {
  assert authentication != null;
  assert message != null;
  assert attributes != null;
  MessageExpressionConfigAttribute attr = findConfigAttribute(attributes);
  if (attr == null) {
    return ACCESS_ABSTAIN;
  }
  EvaluationContext ctx = expressionHandler.createEvaluationContext(authentication,
      message);
  return ExpressionUtils.evaluateAsBoolean(attr.getAuthorizeExpression(), ctx) ? ACCESS_GRANTED
      : ACCESS_DENIED;
}

相关文章

微信公众号

最新文章

更多

ExpressionUtils类方法