używam aktualnej wersji Spring Data Rest i Spring Data JPA i mają następujące jednostki:Wiosna danych rekreacyjne: projekcja oparta Bezpieczeństwo
public class User {
@Id
@GeneratedValue
private Long id;
private String name;
private String password;
private String email;
...getter/setter methods...
}
Jestem również za pomocą Spring Security
.
moim repozytorium użytkownika:
@RepositoryRestResource(
collectionResourceRel = "user",
path = "user",
excerptProjection = UserSimpleProjection.class)
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
}
Dla przykładu:
- Użytkownik 1 jest zalogowany
- użytkownika 1 wnioski
http://localhost:8080/user/1
- wszystkie pola są widoczne - User 1 Wnioski
http://localhost:8080/user/2
- tylkoid
iname
są visibl mi.
Próbowałem różnych rozwiązań z Jackson, żaden z nich nie rozwiązuje mojego problemu:
- Zastosowanie JsonView: znalazłem żadnego sposobu, aby zmienić widok na
ObjectMapper
zależności od zalogowanego użytkownika - Zaimplementowano różne filtry Jackson opisane w artykule here z tym samym problemem, który uniemożliwił zmianę konfiguracji
ObjectMapper
dla różnych żądań.
Następnie znalazłem Projections.
stworzyłem projekcji:
@Projection(name = "simple", types = User.class)
public interface UserSimpleProjection {
public Long getId();
public String getName();
}
i inny szczegółowy One:
@Projection(name = "detailed", types = User.class)
public interface UserDetailProjection extends UserSimpleProjection{
public String getEmail();
}
tej pory tak dobry, mam różne wyniki w zależności od mojego wniosku.
Czy istnieje sposób automatycznego przełączania projekcji w zależności od Spring Security i/lub ograniczania różnych projekcji dla różnych ról?
Czy przypadkiem udaje się występy rolę oparte? – ArunM
Nie, przykro mi. Porzuciłem wtedy i stworzyłem niestandardowych kontrolerów. – Plechi