5

Tôi muốn biết, làm thế nào tôi có thể nhận được đối tượng người dùng từ Thymeleaf. Hiện tại tôi đang gọi userService của tôi, sẽ nhận người dùng từ DB. Tôi không thích cách tiếp cận này, bởi vì đối với mỗi cuộc gọi một truy vấn db sẽ được thực hiện.Khởi động mùa xuân + thymeleaf: đăng nhập người dùng

Có thể đưa người dùng từ bộ nhớ không?

<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

bạn có quyền truy cập vào hiệu trưởng trong 'RequestMappingMethod' –

+0

Bạn đang sử dụng một UserDetailsService tùy chỉnh? Nếu có, bạn có thể cung cấp triển khai của mình không? –

+0

Robert: có, nhưng nó trống rỗng - Nó chỉ có phương thức findUserByName trả về null –

Trả lời

3

Nếu bạn đang sử dụng an ninh mùa xuân và thymeleaf, bạn có thể kiểm tra: https://github.com/thymeleaf/thymeleaf-extras-springsecurity3
Ví dụ:

<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

sẽ chỉ cho bạn tên của SecurityObject - những gì tôi cần là một trường khác từ đối tượng người dùng –

+0

Tôi hiểu @AlexTbk, nếu bạn cần tùy chọn một đối tượng người dùng hoàn chỉnh là thêm nó vào mô hình hoặc bạn cũng có thể truy cập nó như bạn đã cho thấy. Nếu bạn cần xác định xem một số biểu định kiểu có được thêm cho một số loại người dùng nhất định hay không, có thể vai trò có thể hữu ích. –

+0

Thats một ý tưởng tốt - tôi có thể thiết lập một vai trò đặc biệt cho stylesheet đó. Thats nó, cảm ơn! –

Các vấn đề liên quan