【发布时间】:2015-09-22 09:52:55
【问题描述】:
假设我有 2 个必须实体:
@Entity
public class Post {
@NotEmpty
private String title;
@NotEmpty
@Lob
private String html;
@NotEmpty
@Lob
private String text;
@ManyToOne
private Topic topic;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "content_media", joinColumns = {@JoinColumn(name = "content_id")}, inverseJoinColumns = {@JoinColumn(name = "media_id")})
private Set<Media> medias = new HashSet<>();
@CreatedBy
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn
private User createdBy;
@LastModifiedBy
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn
private User lastModifiedBy;
...
}
@Entity
public class Media {
@NotEmpty
private String localPath;
@NotEmpty
private String fileName;
private long fileLength;
private String fileType;
private int focusPointX;
private int focusPointY;
...
}
我正在使用:
@RepositoryRestController
public interface MediaRepository extends JpaRepository<Media, Long> {
}
@RepositoryRestController
public interface PostRepository extends JpaRepository<Post, Long> {
}
我希望这些控制器是安全的。让我自己解释一下。
- 如果登录用户没有 ROLE_ADMIN,媒体应该只 可通过帖子访问,/medias/ 应返回 403 或 404
- 只有拥有 ROLE_USER 的用户才能创建帖子
- 只有创建帖子的用户或拥有 ROLE_ADMIN 的用户才能更新帖子。
- 只有拥有 ROLE_ADMIN 的用户才能删除帖子
有没有办法使用 RepositoryRestController 和 Spring Security 或 RepositoryRestController 仅用于公共资源,我应该使用 RestController 自己编写服务层?
【问题讨论】:
标签: java spring-security spring-boot spring-data spring-data-rest