Spring实体按角色忽略列

时间:2015-06-17 20:20:40

标签: java spring spring-security jackson spring-data

我有一个表作为实体持久存在。如果用户具有“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注释不起作用。

0 个答案:

没有答案
相关问题