Thymeleaf-인증 된 사용자의 전체 이름 가져 오기

어떤 사람

thymeleaf 보안 페이지 에 따르면 다음과 같이 로깅 된 사용자 이름과 역할을 얻을 수 있습니다.

Logged user: <span sec:authentication="name">Bob</span>
Roles: <span sec:authentication="principal.authorities">[ROLE_USER, ROLE_ADMIN]</span>

ActiveDirectoryLdapAuthenticationProvider다음과 같이 Active Directory를 통해 인증이 수행되는 웹 응용 프로그램이 있습니다.

@Bean
@Override
public AuthenticationManager authenticationManager() {
    return new ProviderManager(Arrays.asList(activeDirectoryLdapAuthenticationProvider()));
}

@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
    ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(adDomain,
            adUrl);
    provider.setConvertSubErrorCodesToExceptions(true);
    provider.setUseAuthenticationRequestCredentials(true);  

    return provider;
}

그런 다음 사용자가 로그인 한 후 위의 sec:authentication="name"thymeleaf 태그가 있는 모든 페이지 에서 사용자 이름을 표시 하는 헤더 페이지가 있지만 대신 전체 이름을 표시하는 방법이 있는지 확인하고 싶었습니다.

여기제안 된 솔루션 이 작동하지 않습니다.

나는 사용하고있다 : thymeleaf-extras-springsecurity5

및 사용 : <span th:text ="${#authentication.getPrincipal().getUser().getFirstName()}"></span>

나에게주는 것 : Method getUser() cannot be found on type org.springframework.security.ldap.userdetails.LdapUserDetailsImpl

이 정보의 출처는 다음 org.springframework.security.ldap.userdetails.LdapUserDetailsImpl과 같습니다. 사용자 이름과 같은 몇 가지 옵션이 있지만 AD가 가질 수있는 나머지 정보는 아닙니다.

어떤 사람

이것이 내 문제를 해결 한 방법입니다.

먼저

다음 UserDetailsContextMapperorg.springframework.security.ldap.userdetails.InetOrgPersonContextMapper같이 공급자에 추가했습니다 .

@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
  ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(adDomain, adUrl);
  provider.setConvertSubErrorCodesToExceptions(true);
  provider.setUseAuthenticationRequestCredentials(true);          
  provider.setUserDetailsContextMapper(userDetailsContextMapper());  <---

  return provider;
}

@Bean
public UserDetailsContextMapper userDetailsContextMapper() {
  return new LdapUserDetailsMapper() {
      @Override
      public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> authorities) {
          InetOrgPersonContextMapper personContextMapper = new InetOrgPersonContextMapper();
          return personContextMapper.mapUserFromContext(ctx, username, authorities);                  
      }           
  };
}

둘째

그런 다음 헤더 페이지에서 다음을 추가했습니다.

<span th:text ="${#authentication.getPrincipal().getDisplayName()}"></span>

전체 이름을 표시합니다.

이 접근 방식을 사용하면 다음과 같은 다른 모든 AD 관련 필드도 표시 할 수 있습니다.

<span th:text ="${#authentication.getPrincipal().getMail()}"></span>
<span th:text ="${#authentication.getPrincipal().getTelephoneNumber()}"></span>
<span th:text ="${#authentication.getPrincipal().getRoomNumber()}"></span>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

로그인 한 사용자의 전체 사용자 이름 가져 오기

분류에서Dev

Node.js의 Azure 함수를 통해 현재 인증 된 사용자 이름 가져 오기

분류에서Dev

웹 API에서 인증 된 사용자 이름을 가져 오는 방법 (토큰 기반 인증)

분류에서Dev

자체 서명 된 인증서를 가져 오는 동안 '인증 기관이 아님'

분류에서Dev

coredata 술어로 인증 후 사용자 이름 가져 오기

분류에서Dev

ASP MVC 4 인증 사용자 이름 가져 오기

분류에서Dev

MacOS에서 자체 서명 된 SSL 인증서 가져 오기

분류에서Dev

ASP.NET MVC에서 인증 된 ID 사용자 데이터 가져 오기

분류에서Dev

javascript : 함수에 전달 된 실제 인수의 이름 가져 오기

분류에서Dev

many = True serializer Viewset에서 인증 된 사용자 가져 오기

분류에서Dev

인증 된 사용자로부터 CognitoId 가져 오기

분류에서Dev

Plone 4-인증 된 사용자 유형 가져 오기

분류에서Dev

연결된 서버의 저장 프로 시저 내에서 로그인 한 사용자 이름 가져 오기

분류에서Dev

인증 된 사용자가 속한 모델의 이름 반환

분류에서Dev

2 개 열의 사용자 이름을 기반으로 전체 이름 가져 오기

분류에서Dev

2 개 열의 사용자 이름을 기반으로 전체 이름 가져 오기

분류에서Dev

HAProxy는 기본 인증과 관련된 사용자 이름을 가져옵니다.

분류에서Dev

C #을 사용하여 인쇄 된 페이지 수 가져 오기 (시스템 전체)

분류에서Dev

버전이 지정된 글꼴의 문자열 이름 가져 오기

분류에서Dev

인증 된 사용자가 뒤 따르는 사용자의 최근 미디어 가져 오기

분류에서Dev

현재 사용자의 세션 이름, IP 주소, 설치된 OS 이름 및 C ++에서이 OS의 버전 가져 오기

분류에서Dev

명령 프롬프트에서 Windows의 개인 키가있는 자체 서명 된 인증서 가져 오기

분류에서Dev

자체 서명 된 인증서를 "신뢰할 수있는 루트 인증 기관"저장소로 가져 오는 것이 잘못입니까?

분류에서Dev

SQL Server 테이블의 전체 이름 가져 오기

분류에서Dev

현재 인증 된 사용자를 기반으로 리소스 가져 오기

분류에서Dev

어셈블리를로드하지 않고 참조 된 형식의 전체 이름 가져 오기

분류에서Dev

사용자 에이전트에서 앱 이름 가져 오기

분류에서Dev

다이제스트 인증 (Perl)을 사용하는 서버에서 사용자 이름 가져 오기

분류에서Dev

Mono 및 ServiceStack에서 Apache Basic Auth로 인증 된 인증 된 사용자 가져 오기

Related 관련 기사

  1. 1

    로그인 한 사용자의 전체 사용자 이름 가져 오기

  2. 2

    Node.js의 Azure 함수를 통해 현재 인증 된 사용자 이름 가져 오기

  3. 3

    웹 API에서 인증 된 사용자 이름을 가져 오는 방법 (토큰 기반 인증)

  4. 4

    자체 서명 된 인증서를 가져 오는 동안 '인증 기관이 아님'

  5. 5

    coredata 술어로 인증 후 사용자 이름 가져 오기

  6. 6

    ASP MVC 4 인증 사용자 이름 가져 오기

  7. 7

    MacOS에서 자체 서명 된 SSL 인증서 가져 오기

  8. 8

    ASP.NET MVC에서 인증 된 ID 사용자 데이터 가져 오기

  9. 9

    javascript : 함수에 전달 된 실제 인수의 이름 가져 오기

  10. 10

    many = True serializer Viewset에서 인증 된 사용자 가져 오기

  11. 11

    인증 된 사용자로부터 CognitoId 가져 오기

  12. 12

    Plone 4-인증 된 사용자 유형 가져 오기

  13. 13

    연결된 서버의 저장 프로 시저 내에서 로그인 한 사용자 이름 가져 오기

  14. 14

    인증 된 사용자가 속한 모델의 이름 반환

  15. 15

    2 개 열의 사용자 이름을 기반으로 전체 이름 가져 오기

  16. 16

    2 개 열의 사용자 이름을 기반으로 전체 이름 가져 오기

  17. 17

    HAProxy는 기본 인증과 관련된 사용자 이름을 가져옵니다.

  18. 18

    C #을 사용하여 인쇄 된 페이지 수 가져 오기 (시스템 전체)

  19. 19

    버전이 지정된 글꼴의 문자열 이름 가져 오기

  20. 20

    인증 된 사용자가 뒤 따르는 사용자의 최근 미디어 가져 오기

  21. 21

    현재 사용자의 세션 이름, IP 주소, 설치된 OS 이름 및 C ++에서이 OS의 버전 가져 오기

  22. 22

    명령 프롬프트에서 Windows의 개인 키가있는 자체 서명 된 인증서 가져 오기

  23. 23

    자체 서명 된 인증서를 "신뢰할 수있는 루트 인증 기관"저장소로 가져 오는 것이 잘못입니까?

  24. 24

    SQL Server 테이블의 전체 이름 가져 오기

  25. 25

    현재 인증 된 사용자를 기반으로 리소스 가져 오기

  26. 26

    어셈블리를로드하지 않고 참조 된 형식의 전체 이름 가져 오기

  27. 27

    사용자 에이전트에서 앱 이름 가져 오기

  28. 28

    다이제스트 인증 (Perl)을 사용하는 서버에서 사용자 이름 가져 오기

  29. 29

    Mono 및 ServiceStack에서 Apache Basic Auth로 인증 된 인증 된 사용자 가져 오기

뜨겁다태그

보관