org.apache.shiro.subject.Subject.checkRole()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(10.5k)|赞(0)|评价(0)|浏览(159)

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

Subject.checkRole介绍

[英]Asserts this Subject has the specified role by returning quietly if they do or throwing an org.apache.shiro.authz.AuthorizationException if they do not.
[中]断言此主题具有指定的角色,如果有,则悄悄返回或抛出组织。阿帕奇。西罗。奥兹。授权例外,如果他们没有。

代码示例

代码示例来源:origin: apache/shiro

/**
 * Ensures that the calling <code>Subject</code> has the Annotation's specified roles, and if not, throws an
 * <code>AuthorizingException</code> indicating that access is denied.
 *
 * @param a the RequiresRoles annotation to use to check for one or more roles
 * @throws org.apache.shiro.authz.AuthorizationException
 *          if the calling <code>Subject</code> does not have the role(s) necessary to
 *          proceed.
 */
public void assertAuthorized(Annotation a) throws AuthorizationException {
  if (!(a instanceof RequiresRoles)) return;
  RequiresRoles rrAnnotation = (RequiresRoles) a;
  String[] roles = rrAnnotation.value();
  if (roles.length == 1) {
    getSubject().checkRole(roles[0]);
    return;
  }
  if (Logical.AND.equals(rrAnnotation.logical())) {
    getSubject().checkRoles(Arrays.asList(roles));
    return;
  }
  if (Logical.OR.equals(rrAnnotation.logical())) {
    // Avoid processing exceptions unnecessarily - "delay" throwing the exception by calling hasRole first
    boolean hasAtLeastOneRole = false;
    for (String role : roles) if (getSubject().hasRole(role)) hasAtLeastOneRole = true;
    // Cause the exception if none of the role match, note that the exception message will be a bit misleading
    if (!hasAtLeastOneRole) getSubject().checkRole(roles[0]);
  }
}

代码示例来源:origin: apache/shiro

public void run() {
  // get the current subject
  Subject subject = SecurityUtils.getSubject();
  // Subject is not authenticated yet
  Assert.isTrue(!subject.isAuthenticated());
  // login the subject with a username / password
  UsernamePasswordToken token = new UsernamePasswordToken("joe.coder", "password");
  subject.login(token);
  // joe.coder has the "user" role
  subject.checkRole("user");
  // joe.coder does NOT have the admin role
  Assert.isTrue(!subject.hasRole("admin"));
  // joe.coder has the "read" permission
  subject.checkPermission("read");
  // current user is allowed to execute this method.
  simpleService.readRestrictedCall();
  try {
    // but not this one!
    simpleService.writeRestrictedCall();
  }
  catch (AuthorizationException e) {
    log.info("Subject was NOT allowed to execute method 'writeRestrictedCall'");
  }
  // logout
  subject.logout();
  Assert.isTrue(!subject.isAuthenticated());
}

代码示例来源:origin: org.apache.shiro/shiro-core

/**
 * Ensures that the calling <code>Subject</code> has the Annotation's specified roles, and if not, throws an
 * <code>AuthorizingException</code> indicating that access is denied.
 *
 * @param a the RequiresRoles annotation to use to check for one or more roles
 * @throws org.apache.shiro.authz.AuthorizationException
 *          if the calling <code>Subject</code> does not have the role(s) necessary to
 *          proceed.
 */
public void assertAuthorized(Annotation a) throws AuthorizationException {
  if (!(a instanceof RequiresRoles)) return;
  RequiresRoles rrAnnotation = (RequiresRoles) a;
  String[] roles = rrAnnotation.value();
  if (roles.length == 1) {
    getSubject().checkRole(roles[0]);
    return;
  }
  if (Logical.AND.equals(rrAnnotation.logical())) {
    getSubject().checkRoles(Arrays.asList(roles));
    return;
  }
  if (Logical.OR.equals(rrAnnotation.logical())) {
    // Avoid processing exceptions unnecessarily - "delay" throwing the exception by calling hasRole first
    boolean hasAtLeastOneRole = false;
    for (String role : roles) if (getSubject().hasRole(role)) hasAtLeastOneRole = true;
    // Cause the exception if none of the role match, note that the exception message will be a bit misleading
    if (!hasAtLeastOneRole) getSubject().checkRole(roles[0]);
  }
}

代码示例来源:origin: apache/shiro

public void run() {
  // get the current subject
  Subject subject = SecurityUtils.getSubject();
  // Subject is not authenticated yet
  Assert.isTrue(!subject.isAuthenticated());
  // login the subject with a username / password
  UsernamePasswordToken token = new UsernamePasswordToken("joe.coder", "password");
  subject.login(token);
  // joe.coder has the "user" role
  subject.checkRole("user");
  // joe.coder does NOT have the admin role
  Assert.isTrue(!subject.hasRole("admin"));
  // joe.coder has the "read" permission
  subject.checkPermission("read");
  // current user is allowed to execute this method.
  simpleService.readRestrictedCall();
  try {
    // but not this one!
    simpleService.writeRestrictedCall();
  }
  catch (AuthorizationException e) {
    log.info("Subject was NOT allowed to execute method 'writeRestrictedCall'");
  }
  // logout
  subject.logout();
  Assert.isTrue(!subject.isAuthenticated());
}

代码示例来源:origin: cn.dreampie/jfinal-shiro

@Override
 public void assertAuthorized() throws AuthorizationException {

  Subject subject = getSubject();

  if (!(annotation instanceof RequiresRoles)) return;
  RequiresRoles rrAnnotation = (RequiresRoles) annotation;
  String[] roles = rrAnnotation.value();

  if (roles.length == 1) {
   subject.checkRole(roles[0]);
   return;
  }
  if (Logical.AND.equals(rrAnnotation.logical())) {
   subject.checkRoles(Arrays.asList(roles));
   return;
  }
  if (Logical.OR.equals(rrAnnotation.logical())) {
   // Avoid processing exceptions unnecessarily - "delay" throwing the exception by calling hasRole first
   boolean hasAtLeastOneRole = false;
   for (String role : roles) if (subject.hasRole(role)) hasAtLeastOneRole = true;
   // Cause the exception if none of the role match, note that the exception message will be a bit misleading
   if (!hasAtLeastOneRole) subject.checkRole(roles[0]);
  }
 }
}

代码示例来源:origin: apache/usergrid

subject.login( token );
subject.checkRole( "application-role:" + applicationId + ":logged-in" );

代码示例来源:origin: Dreampie/jfinal-shiro

@Override
 public void assertAuthorized() throws AuthorizationException {

  Subject subject = getSubject();

  if (!(annotation instanceof RequiresRoles)) return;
  RequiresRoles rrAnnotation = (RequiresRoles) annotation;
  String[] roles = rrAnnotation.value();

  if (roles.length == 1) {
   subject.checkRole(roles[0]);
   return;
  }
  if (Logical.AND.equals(rrAnnotation.logical())) {
   subject.checkRoles(Arrays.asList(roles));
   return;
  }
  if (Logical.OR.equals(rrAnnotation.logical())) {
   // Avoid processing exceptions unnecessarily - "delay" throwing the exception by calling hasRole first
   boolean hasAtLeastOneRole = false;
   for (String role : roles) if (subject.hasRole(role)) hasAtLeastOneRole = true;
   // Cause the exception if none of the role match, note that the exception message will be a bit misleading
   if (!hasAtLeastOneRole) subject.checkRole(roles[0]);
  }
 }
}

代码示例来源:origin: org.seedstack.seed/seed-security-core

protected void checkRole(String role) {
  try {
    SecurityUtils.getSubject().checkRole(role);
  } catch (org.apache.shiro.authz.AuthorizationException e) {
    throw new AuthorizationException("Subject doesn't have role " + role, e);
  }
}

代码示例来源:origin: yangfuhai/jboot

@Override
  public AuthorizeResult authorize() {
    String[] roles = requiresRoles.value();
    try {
      if (roles.length == 1) {
        SecurityUtils.getSubject().checkRole(roles[0]);
        return AuthorizeResult.ok();
      }
      if (Logical.AND.equals(requiresRoles.logical())) {
        SecurityUtils.getSubject().checkRoles(Arrays.asList(roles));
        return AuthorizeResult.ok();
      }
      if (Logical.OR.equals(requiresRoles.logical())) {
        // Avoid processing exceptions unnecessarily - "delay" throwing the exception by calling hasRole first
        boolean hasAtLeastOneRole = false;
        for (String role : roles) if (SecurityUtils.getSubject().hasRole(role)) hasAtLeastOneRole = true;
        // Cause the exception if none of the role match, note that the exception message will be a bit misleading
        if (!hasAtLeastOneRole) SecurityUtils.getSubject().checkRole(roles[0]);
      }
      
      return AuthorizeResult.ok();

    } catch (AuthorizationException e) {
      return AuthorizeResult.fail(AuthorizeResult.ERROR_CODE_UNAUTHORIZATION);
    }

  }
}

代码示例来源:origin: org.seedstack.seed/seed-security-core

@Override
public void checkRole(String roleIdentifier) {
  try {
    SecurityUtils.getSubject().checkRole(roleIdentifier);
  } catch (org.apache.shiro.authz.AuthorizationException e) {
    throw new AuthorizationException("Subject doesn't have role " + roleIdentifier, e);
  }
}

代码示例来源:origin: uk.q3c.krail/krail

getSubject().checkRole(roles[0]);
return;
  getSubject().checkRole(roles[0]);

代码示例来源:origin: cn.dreampie/jfinal-shiro

@Override
 public void assertAuthorized() throws AuthorizationException {
  Subject subject = getSubject();
  //数据库权限
  if (jdbcRole != null) {
   subject.checkRole(jdbcRole);
   return;
  }
 }
}

代码示例来源:origin: com.github.sogyf/goja-mvt

@Override
  public void assertAuthorized() throws AuthorizationException {
    //if (!(annotation instanceof RequiresRoles)) return;
    RequiresRoles rrAnnotation = (RequiresRoles) annotation;
    String[] roles = rrAnnotation.value();

    if (roles.length == 1) {
      getSubject().checkRole(roles[0]);
      return;
    }
    if (Logical.AND.equals(rrAnnotation.logical())) {
      getSubject().checkRoles(Arrays.asList(roles));
      return;
    }
    if (Logical.OR.equals(rrAnnotation.logical())) {
      // Avoid processing exceptions unnecessarily - "delay" throwing the exception by calling hasRole first
      boolean hasAtLeastOneRole = false;
      for (String role : roles) if (getSubject().hasRole(role)) hasAtLeastOneRole = true;
      // Cause the exception if none of the role match, note that the exception message will be a bit misleading
      if (!hasAtLeastOneRole) getSubject().checkRole(roles[0]);
    }
  }
}

代码示例来源:origin: Dreampie/jfinal-shiro

@Override
 public void assertAuthorized() throws AuthorizationException {
  Subject subject = getSubject();
  //数据库权限
  if (jdbcRole != null) {
   subject.checkRole(jdbcRole);
   return;
  }
 }
}

代码示例来源:origin: KrailOrg/krail

getSubject().checkRole(roles[0]);
return;
  getSubject().checkRole(roles[0]);

代码示例来源:origin: org.secnod.shiro/shiro-jersey

public void checkRole(String roleIdentifier) throws AuthorizationException {
    this.subject.checkRole(roleIdentifier);
  }
}

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.shiro

/**
 * Ensures that the calling <code>Subject</code> has the Annotation's specified roles, and if not, throws an
 * <code>AuthorizingException</code> indicating that access is denied.
 *
 * @param a the RequiresRoles annotation to use to check for one or more roles
 * @throws org.apache.shiro.authz.AuthorizationException
 *          if the calling <code>Subject</code> does not have the role(s) necessary to
 *          proceed.
 */
public void assertAuthorized(Annotation a) throws AuthorizationException {
  if (!(a instanceof RequiresRoles)) return;
  RequiresRoles rrAnnotation = (RequiresRoles) a;
  String[] roles = rrAnnotation.value();
  if (roles.length == 1) {
    getSubject().checkRole(roles[0]);
    return;
  }
  if (Logical.AND.equals(rrAnnotation.logical())) {
    getSubject().checkRoles(Arrays.asList(roles));
    return;
  }
  if (Logical.OR.equals(rrAnnotation.logical())) {
    // Avoid processing exceptions unnecessarily - "delay" throwing the exception by calling hasRole first
    boolean hasAtLeastOneRole = false;
    for (String role : roles) if (getSubject().hasRole(role)) hasAtLeastOneRole = true;
    // Cause the exception if none of the role match, note that the exception message will be a bit misleading
    if (!hasAtLeastOneRole) getSubject().checkRole(roles[0]);
  }
}

相关文章