知識庫 / Spring / Spring Boot RSS 訂閱

創建 JHipster 中的新角色和權限

Security,Spring Boot
HongKong
4
01:27 PM · Dec 06 ,2025

1. 概述

JHipster 默認包含兩個角色——USER 和 ADMIN,但有時我們需要添加自定義角色。

在本教程中,我們將創建一個名為 MANAGER 的新角色,以便為用户提供額外的權限。

請注意,JHipster 使用“authorities”一詞與“roles”有時會互換使用。 無論哪種方式,我們基本上指的是相同的東西。

2. 代碼變更

創建新角色第一步是更新類 AuthoritiesConstants。該文件在創建新的 JHipster 應用程序時會自動生成,其中包含應用程序中所有角色和權限的常量。

為了創建我們的新 MANAGER 角色,我們只需在該文件中添加一個新的常量:

public static final String MANAGER = "ROLE_MANAGER";

3. 模式變更

下一步是定義新的角色,添加到我們的數據存儲中。

JHipster 支持多種持久化數據存儲,並創建一個初始設置任務,該任務將數據存儲中填充為用户和權限。

要將新的角色添加到數據庫設置中,我們需要編輯 InitialSetupMigration.java 文件。它已經有一個名為 addAuthorities 的方法,我們只需將新的角色添加到現有代碼中:

public void addAuthorities(MongoTemplate mongoTemplate) {
    // Add these lines after the existing, auto-generated code
    Authority managerAuthority = new Authority();
    managerAuthority.setName(AuthoritiesConstants.MANAGER);
    mongoTemplate.save(managerAuthority);
}

本示例使用 MongoDB,但步驟與 JHipster 支持的其他持久化存儲非常相似。

請注意,某些數據存儲,如 H2,僅依賴於名為 authorities.csv 的文件,因此沒有生成任何需要更新的代碼。

4. 使用我們的新角色

現在我們已經定義了新的角色,讓我們看看如何在我們的代碼中使用它。

4.1. Java 代碼

在後端,有兩主要方法來檢查用户是否具有執行操作的權限。

首先,我們可以修改 SecurityConfiguration 以限制對特定 API 的訪問:

public SecurityFilterChain filterChain(HttpSecurity http, MvcRequestMatcher.Builder mvc) throws Exception {
    http.authorizeHttpRequests(authz -> authz.requestMatchers(mvc.pattern("/management/**"))
        .hasAuthority(AuthoritiesConstants.MANAGER));
    return http.build();
}

第二,我們可以使用 SecurityUtils 在應用程序的任何位置來檢查用户是否具有某個角色:

if (SecurityUtils.isCurrentUserInRole(AuthoritiesConstants.MANAGER)) {
    // perform some logic that is applicable to manager role
}

4.2. 前端 (Front-End)

JHipster 提供兩種方法來在前端檢查角色權限。請注意,這些示例使用 Angular,但類似構造也適用於 React。

首先,任何模板中的元素都可以使用 *jhiHasAnyAuthority 指令。它接受單個字符串或字符串數組作為參數:

<div *jhiHasAnyAuthority="'ROLE_MANAGER'">
    <!-- manager related code here -->
</div>

其次,Principal 類可以檢查用户是否具有特定的角色:

isManager() {
    return this.principal.identity()
      .then(account => this.principal.hasAnyAuthority(['ROLE_MANAGER']));
}

5. 結論

在本文中,我們瞭解到在 JHipster 中創建新的角色和權限有多麼簡單。雖然默認的 USER 和 ADMIN 角色對於大多數應用程序來説是一個不錯的起點,但額外的角色提供了更大的靈活性。

通過額外的角色,我們可以更好地控制哪些用户可以訪問 API 以及他們可以在前端看到哪些數據。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.