春季安全的全球授权

时间:2016-05-06 12:17:11

标签: java spring hibernate security http

我正试图围绕Spring Security。我想要实现的是API是全局安全的,因此不是特定于方法的,具体取决于HTTP动词和用户角色。

因此,在 GET 方法中,您需要 经过身份验证 并带有 USER 角色。 所有其他都需要ADMIN权限。我的用户实体类看起来像这样(使用Lombok数据注释):

@Entity
@Data
@NoArgsConstructor
@Table(uniqueConstraints=@UniqueConstraint(columnNames={"username"}))

public class User {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long id;

  @NotNull
  private String username, password;

  @NotNull
  @Enumerated(EnumType.STRING)
    private UserRole role;

  private boolean activated, tokenExpired;
}

任何帮助都会非常感激,不喜欢项目中没有XML。

1 个答案:

答案 0 :(得分:0)

我是老狗,有老技巧,所以这是XML解决方案:

applicationContext-security.xml

<http use-expressions="true" disable-url-rewriting="true">

    <intercept-url pattern="/**" method="GET" access="hasRole('ROLE_USER')"/>
    <intercept-url pattern="/**" access="hasRole('ROLE_ADMIN')"/>

    <http-basic/>

</http>