Как заполнить таблицы MySQL для Spring Security Role Based Access Authorization, используя RESTful? - PullRequest
0 голосов
/ 19 января 2019

У меня есть 3 таблицы MySQL, и я использую их для настройки Spring Security с ролями.И я хочу заполнить 2 из них, используя RESTful.

Таблица пользователей: enter image description here

Таблица ролей: enter image description here

Таблица user_role (это таблица объединения): enter image description here

Приложение работает успешно, но в данный момент я заполняю эти таблицы из MySQL Workbench и хочу заполнить их с помощью RESTful.Но я точно не знаю, как это сделать, как должен выглядеть объект JSON при выполнении запроса POST?Например, таблица ролей будет по умолчанию с этими двумя значениями: ROLE_ADMIN и ROLE_USER, поэтому я не хочу добавлять какие-либо новые значения в эту таблицу, но как добавить нового пользователя и заполнить пользовательскую таблицу и таблицу user_role?

Это сущности:

Сущность пользователя:

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

import org.springframework.security.core.userdetails.UserDetails;

import javax.persistence.JoinColumn;

@Entity
@Table(name = "appuser")
public class ApplicationUser {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    private long id;
    private String username;
    private String password;

    @ManyToMany(fetch = FetchType.EAGER,
            cascade = {CascadeType.DETACH, CascadeType.MERGE, 
        CascadeType.PERSIST, CascadeType.REFRESH})
    @JoinTable(name = "appuser_role",
            joinColumns = @JoinColumn(name = "appuser_id"),
            inverseJoinColumns = @JoinColumn(name = "approle_id"))
    private List<Role> authorities;

    public ApplicationUser() {

    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public List<Role> getAuthorities() {
        return authorities;
    }

    public void setAuthorities(List<Role> authorities) {
        this.authorities = authorities;
    }

}

Роль сущности:

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

import org.springframework.security.core.GrantedAuthority;

import com.fasterxml.jackson.annotation.JsonIgnore;

@Entity
@Table(name = "approle")
public class Role {

    @Id
    @Column(name = "role_id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;

    private String authority;

    @JsonIgnore
    @ManyToMany(mappedBy = "authorities")
    private Set<ApplicationUser> users = new HashSet<>();

    public Role() {
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getAuthority() {
        return authority;
    }

    public void setAuthority(String authority) {
        this.authority = authority;
    }

    public Set<ApplicationUser> getUsers() {
        return users;
    }

    public void setUsers(Set<ApplicationUser> users) {
        this.users = users;
    }

    @Override
    public String toString() {
        return authority;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...