Поддержка безопасности Acegi/Spring getUserPrincipal ()?

Channels.list возвращает список channelResource

statistics.viewCount unsigned long Количество просмотров канала.

blockquote>

Dummy Channel

enter image description here

Ответ от теста api здесь

enter image description here

Я подозреваю, что вы смотрите на просмотры для видео.

5
задан ebruchez 11 March 2009 в 20:16
поделиться

3 ответа

Поскольку предыдущий пользователь имеет ответ, Spring Security поддерживает getUserPrincipal и isUserInRole. Вот как это работает в Spring Security.

Когда вы настраиваете Spring, он может загружать следующие фильтры:

http://static.springframework.org/spring-security/site/reference/html/ns-config. html # filter-stack

В рамках стандартной конфигурации фильтра загружается фильтр SecurityContextHolderAwareRequestFilter .

Изучение фильтра @ https://fisheye.springsource.org/browse/spring -Безопасность / теги / весна-безопасности родитель-2.0.4 / ядро ​​/ SRC / главная / Java / орг / springframework / безопасность / упаковщик / SecurityContextHolderAwareRequestFilter. java? r = 2514

Вы можете видеть, как он оборачивает и изменяет объект HttpServletRequest на класс SecurityContextHolderAwareRequestWrapper , который расширяет HttpServletRequestWrapper Hweg

public class SomeExample {

  public static void main(String[] args) throws Exception{
    Object myObj = new SomeDerivedClass(1234);
    Class myClass = myObj.getClass();
    Field myField = getField(myClass, "value");
    myField.setAccessible(true); //required if field is not normally accessible
    System.out.println("value: " + myField.get(myObj));
  }

  private static Field getField(Class clazz, String fieldName)
        throws NoSuchFieldException {
    try {
      return clazz.getDeclaredField(fieldName);
    } catch (NoSuchFieldException e) {
      Class superClass = clazz.getSuperclass();
      if (superClass == null) {
        throw e;
      } else {
        return getField(superClass, fieldName);
      }
    }
  }
}

class SomeBaseClass {
  private Integer value;

  SomeBaseClass(Integer value) {
    this.value = value;
  }
}

class SomeDerivedClass extends SomeBaseClass {
  SomeDerivedClass(Integer value) {
    super(value);
  }
}
, который реализует 114 и верните его в стандартную цепочку doFilter фильтра сервлетов. Поскольку весенний фильтр безопасности должен быть настроен в качестве первого фильтра, все последующие классы будут видеть вместо него SecurityContextHolderAwareRequestWrapper . Это включает в себя JSP-страницы или сервлеты за этим фильтром.

Когда вы делаете вызов isUserInRole или getUserPrincipal со страницы JSP, сервлета или любой инфраструктуры за этим фильтром, он вызывает реализация HttpServletRequest из Spring Security.

все последующие классы увидят вместо этого SecurityContextHolderAwareRequestWrapper . Это включает в себя JSP-страницы или сервлеты за этим фильтром.

Когда вы делаете вызов isUserInRole или getUserPrincipal со страницы JSP, сервлета или любой инфраструктуры за этим фильтром, он вызывает реализация HttpServletRequest из Spring Security.

все последующие классы увидят вместо этого SecurityContextHolderAwareRequestWrapper . Это включает в себя JSP-страницы или сервлеты за этим фильтром.

Когда вы делаете вызов isUserInRole или getUserPrincipal со страницы JSP, сервлета или любой инфраструктуры за этим фильтром, он вызывает реализация HttpServletRequest из Spring Security.

6
ответ дан 14 December 2019 в 09:01
поделиться

При использовании фильтра защиты да он делает. Я полагаю, что это - поведение по умолчанию.

Точно, который класс, который Вы возвращаете, зависит от Вашей конфигурации, но они все реализуют интерфейс Principal посредством собственного org.springframework.security Spring. Интерфейс Authentication, который расширяет его.

Я использовал request.getUserPrincipal () и request.isUserInRole () в приложении Spring, и это работает беспрепятственно, даже в JSPs.

1
ответ дан 14 December 2019 в 09:01
поделиться

Я действительно полагаю, что безопасность Spring хранит эту информацию в SecurityContext а не в запросе все же. Вы могли легко записать FilterSecurityInterceptor, который может быть настроен для добавления этой информации к запросу также.

0
ответ дан 14 December 2019 в 09:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: