我有一个表作为实体持久存在。如果用户具有“ADMIN”角色,则表中的一列只应序列化(通过jackson)。如何添加条件仅按安全角色序列化?
代码:
@Entity
@Table(name="Profile")
@SecondaryTable(name="Account", pkJoinColumns=@PrimaryKeyJoinColumn(name="id", referencedColumnName="user_id"))
public class Profile {
@Id
@GeneratedValue
@Column(name="user_id")
private Long userId;
@Column(name="username", unique=true, nullable=false)
private String username;
@Column(name="email", unique=true, nullable=false)
private String email;
@Column(table="Account", name="role", nullable=false)
@Enumerated(EnumType.STRING)
private Role role;
.....
@PreAuthorize("hasRole('ROLE_ADMIN')")
public Role getRole() {
return role;
}
@PreAuthorize("hasRole('ROLE_ADMIN')")
public void setRole(Role role) {
this.role = role;
}
这样做的结果是,如果具有相应安全权限的用户(即管理员)访问http://example.com/profiles/1,那么它将返回JSON中的角色键/值对,但如果是非ADMIN是,然后它不会。 @PreAuthorize注释不起作用。