Я проектирования модели БД, где я хочу иметь:Hibernate Spring безопасности изменен дизайн, как
- пользователя (ID, ROLE_ID) (UserDetails)
- Разрешение (ROLE_ID, разрешение) (GrantedAuthority)
- Роль (идентификатор, описание)
Я использую Hibernate и Spring безопасности. Я хочу, чтобы у каждой роли был список разрешений (GrantedAuthorities) с использованием role_id, а не у конкретного пользователя. Я немного потерял разработку этого. Это то, к чему я пришел до сих пор:
Я опустил не очень важный код. Класс Role не важен для безопасности Spring.
Я знаю, что я совершаю огромную ошибку, но я просто не могу понять, как это исправить. Проблема в том, что он объединяет эти два объекта, используя user.id вместо user.roleId. Я пробовал разные аннотации, но я просто не могу правильно подключить их.
Таким образом, проблема с сырой продукцией, вероятно, состоит в том, что я пытаюсь присоединиться к двум объектам, используя свойство из одного и ПК из другого, что может быть ошибкой.
Редактировать: Я также попытался указать referColumnName в классе Permission, но это тоже не сработало. Пользователь не может войти в систему.
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "role_id", nullable = false, insertable = false, updatable = false, referencedColumnName = "role_id")
private User user;
Вы можете также предоставить схему сущности? Я не вижу, как разрешение сопоставляется с объектом User. Он должен быть обратным = true в пользовательском объекте, так как разрешение поддерживает отношения. – Zeus
У меня нет диаграммы сущности, но я в значительной степени свободен, чтобы изменить ситуацию. Просто нужно как-то работать. Если я просто избегаю аннотаций и устанавливаю список разрешений вручную на основе role_id, пользователь работает правильно. – Lenymm
Просто забудьте о коде. Как бы вы достигли системы, где пользователь имеет несколько разрешений, основанных на его роли? И он должен работать под управлением Spring, поэтому пользователь должен вернуть список разрешений. – Lenymm