Можно ли предоставить API-интерфейс, созданный с помощью Spring Data Rest, для управления теми же пользователями, что и с весной, для проверки подлинности и контроля доступа?spring data rest: Как опубликовать руководство пользователя api
Рассмотрим сущность:
@Entity
public class User implements UserDetails {
....
}
, который используется с пружинным безопасности:
@Service
public class RepositoryUserDetailsService implements UserDetailsService{
private final UnsecuredUserRepository users;
@Autowired
public RepositoryUserDetailsService(UnsecuredUserRepository users) {
this.users = users;
}
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User one = users.findOne(username);
if (one == null) {
throw new UsernameNotFoundException("No such user");
}
return one;
}
}
Он использует следующий репозиторий весной данных:
public interface UnsecuredUserRepository extends CrudRepository<User, String> {
}
Теперь я хочу добавить admin API для управления пользователями. Подставка для данных Spring может сделать это для меня, и я могу использовать весеннюю безопасность для ее защиты.
@PreAuthorize("hasRole('ROLE_USER_MANAGER')")
public interface UserRepository extends CrudRepository<User, String>, UserSignUpExtension {
@Override
@PreAuthorize("hasRole('ROLE_USER_MANAGER') or #userName == authentication?.name")
void delete(@Param("userName") String userName);
}
Проблема заключается в том, что один не может иметь multiple repositories for the same entities with spring data rest, используя обеспеченное репо создает проблему куриного яйца, а также предотвращает меня от стартового кода, который создает пользователь по умолчанию (так как проверки безопасности, уже применяется).
попробуйте выполнить команду curl: http://www.codingpedia.org/ama/how-to-test-a-rest-api-from-command-line-with-curl/ –
Команда curl не поможет , Проблема заключается не в тестировании API, а в том, чтобы разоблачить его в первую очередь. – Alpar
Это действительно смешно. Просто создайте другой репозиторий без разрешения или спящего режима или что-то, что запускается при запуске, чтобы создать учетную запись пользователя. Это репо не должно быть доступно клиенту в любом случае. – Snickers3192