技術スタック
バックエンドは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;