教育管理システムの技術的実装:SpringBoot・Vue・uniappを活用した設計と実装

技術スタック

バックエンドはSpring Bootを採用し、内蔵Tomcatによる即時起動を実現。自動構成機能で依存関係の設定を簡素化し、Spring DataやSpring Securityを活用した拡張性を確保しています。

フロントエンドはVue.jsの仮想DOM技術を基盤に、データバインディングとコンポーネント化によりUIの効率的な更新を実現します。

データアクセス層にはMyBatis-Plusを採用。自動コード生成機能と分ページ処理、動的クエリ機能を活用し、データ操作の生産性を向上させています。

認証処理の実装

トークンベースの認可ロジックを実装しています。

@SkipAuth
@PostMapping("/auth")
public Response validateLogin(@RequestBody AuthRequest authRequest) {
    UserEntity user = userService.findByUsername(authRequest.getUsername());
    if (user == null || !user.getPassword().equals(authRequest.getPlainPassword())) {
        return Response.error("認証情報不正");
    }
    String sessionToken = authService.createSessionToken(
        user.getId(), 
        user.getUsername(), 
        "users", 
        user.getRole()
    );
    return Response.success().put("token", sessionToken);
}

システムテスト

ログイン機能テスト

入力データ 期待結果 実際の結果 検証
ユーザー名: teacher01 パスワード: securepass ログイン成功 システムにアクセス可能 正常
ユーザー名: teacher01 パスワード: wrongpass パスワードエラー パスワードが不正です 正常
ユーザー名: 空 パスワード: securepass ユーザー名必須 ユーザー名を入力してください 正常

ユーザー管理機能テスト

入力データ 期待結果 実際の結果 検証
新規ユーザー登録 登録成功 リストに表示 正常
既存ユーザー名登録 登録失敗 ユーザー名が重複しています 正常
ユーザー削除 削除確認 削除確認ダイアログ表示 正常

データベース設計

CREATE TABLE `session_token` (
  `id` BIGINT NOT NULL AUTO_INCREMENT,
  `user_id` BIGINT NOT NULL,
  `user_name` VARCHAR(100) NOT NULL,
  `entity_name` VARCHAR(100) DEFAULT NULL,
  `role_type` VARCHAR(100) DEFAULT NULL,
  `token_value` VARCHAR(200) NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `expiry_time` TIMESTAMP NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

タグ: SpringBoot vue.js MyBatis-Plus UniApp TokenAuthentication

6月24日 23:27 投稿