5

Mi piacerebbe sapere come posso ottenere l'oggetto User da Thymeleaf. Attualmente sto chiamando il mio userService, che otterrà l'utente dal DB. Non mi piace questo approccio, perché per ogni chiamata verrà eseguita una query DB.Spring boot + thymeleaf: accesso utente

È possibile ottenere l'utente dalla memoria?

<link href="/css/style2.css" 
    th:if="${@commanderService.getCurrentCommander()} and 
     ${@commanderService.getCurrentCommander().settings == 'template=1'}" 
    rel="stylesheet" type="text/css" /> 

CommanderService:

public Commander getCurrentCommander() { 
    Object principal = 
     SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 
    Commander commander = findByName((String)principal); 

    return commander; 
} 
+0

si ha accesso alla principale il 'RequestMappingMethod' –

+0

Stai usando un UserDetailsService personalizzato? Se sì, puoi fornire la tua implementazione? –

+0

Robert: sì, ma è vuoto- Ha solo il metodo findUserByName che restituisce null –

risposta

3

Se si utilizza la protezione primavera e thymeleaf, si potrebbe verificare: https://github.com/thymeleaf/thymeleaf-extras-springsecurity3
Ad esempio:

<div sec:authentication="name"> 
    The value of the "name" property of the authentication object should appear here. 
</div> 

<div sec:authorize="hasRole('ROLE_ADMIN')"> 
    This content is only shown to administrators. 
</div> 
+0

ti darà solo il nome di SecurityObject - quello di cui ho bisogno è un altro campo dall'oggetto utente –

+0

Capisco @AlexTbk, se ti serve l'opzione User Object completa è un'opzione per aggiungerla al modello oppure puoi anche accedervi come hai mostrato. Se è necessario definire se alcuni fogli di stile sono stati aggiunti per determinati tipi di utenti, forse i ruoli potrebbero aiutare. –

+0

Questa è una buona idea: potrei impostare un ruolo speciale per quel foglio di stile. Ecco, grazie! –