From 9fbaacc36aacb69fb71f876f90f1a2609537f338 Mon Sep 17 00:00:00 2001 From: ikmkj <1@qq,com> Date: Sat, 26 Jul 2025 09:49:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(security):=20=E6=B7=BB=E5=8A=A0=20SaIgnore?= =?UTF-8?q?=20=E6=B3=A8=E8=A7=A3=E4=BB=A5=E5=85=81=E8=AE=B8=E6=9C=AA?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=94=A8=E6=88=B7=E8=AE=BF=E9=97=AE=E7=89=B9?= =?UTF-8?q?=E5=AE=9A=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 BannerController、CommentController、HotMusicController、MusicController、PlaylistController、SingerController、TypeController 和 UserController 中添加了 SaIgnore 注解 - 这些注解允许未登录用户访问被注解的接口,以便在前端页面中展示相关信息 --- .../test/musichouduan/controller/BannerController.java | 3 +++ .../test/musichouduan/controller/CommentController.java | 1 + .../test/musichouduan/controller/HotMusicController.java | 4 ++++ .../test/musichouduan/controller/MusicController.java | 9 +++++++++ .../test/musichouduan/controller/PlaylistController.java | 7 +++++++ .../test/musichouduan/controller/SingerController.java | 8 ++++++++ .../com/test/musichouduan/controller/TypeController.java | 2 ++ .../com/test/musichouduan/controller/UserController.java | 3 +++ 8 files changed, 37 insertions(+) diff --git a/music-houduan/src/main/java/com/test/musichouduan/controller/BannerController.java b/music-houduan/src/main/java/com/test/musichouduan/controller/BannerController.java index bee199a..5b6e67f 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/controller/BannerController.java +++ b/music-houduan/src/main/java/com/test/musichouduan/controller/BannerController.java @@ -1,6 +1,8 @@ package com.test.musichouduan.controller; +import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaIgnore; import com.test.musichouduan.dto.BannerDTO; import com.test.musichouduan.dto.PageResult; import com.test.musichouduan.dto.Result; @@ -43,6 +45,7 @@ public class BannerController { * * @return 响应结果 */ + @SaIgnore @Operation(summary = "获取轮播图列表", description = "获取所有启用状态的轮播图列表") @GetMapping("/list") public Result> getBannerList() { diff --git a/music-houduan/src/main/java/com/test/musichouduan/controller/CommentController.java b/music-houduan/src/main/java/com/test/musichouduan/controller/CommentController.java index 6a986cc..d18996d 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/controller/CommentController.java +++ b/music-houduan/src/main/java/com/test/musichouduan/controller/CommentController.java @@ -2,6 +2,7 @@ package com.test.musichouduan.controller; import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.stp.StpUtil; import com.test.musichouduan.dto.CommentDTO; import com.test.musichouduan.dto.PageResult; diff --git a/music-houduan/src/main/java/com/test/musichouduan/controller/HotMusicController.java b/music-houduan/src/main/java/com/test/musichouduan/controller/HotMusicController.java index dc44079..0cfdf6f 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/controller/HotMusicController.java +++ b/music-houduan/src/main/java/com/test/musichouduan/controller/HotMusicController.java @@ -1,5 +1,8 @@ package com.test.musichouduan.controller; +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaIgnore; import com.test.musichouduan.dto.MusicDTO; import com.test.musichouduan.dto.Result; import com.test.musichouduan.service.MusicService; @@ -33,6 +36,7 @@ public class HotMusicController { * @param limit 限制数量 * @return 响应结果 */ + @SaIgnore @GetMapping("/list") public Result> getHotMusic(@RequestParam(defaultValue = "10") Integer limit) { // 调用 service 层的新方法,该方法会优先从 Redis 缓存获取 diff --git a/music-houduan/src/main/java/com/test/musichouduan/controller/MusicController.java b/music-houduan/src/main/java/com/test/musichouduan/controller/MusicController.java index f44098d..d128fbe 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/controller/MusicController.java +++ b/music-houduan/src/main/java/com/test/musichouduan/controller/MusicController.java @@ -2,6 +2,7 @@ package com.test.musichouduan.controller; import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.stp.StpUtil; import com.test.musichouduan.dto.MusicDTO; import com.test.musichouduan.dto.MusicStatusDTO; @@ -30,6 +31,7 @@ public class MusicController { * @param id 音乐ID * @return 响应结果 */ + @SaIgnore @GetMapping("/{id}") public Result getMusicById(@PathVariable Long id) { Long userId = null; @@ -54,6 +56,7 @@ public class MusicController { * @param typeId 类型ID * @return 响应结果 */ + @SaIgnore @GetMapping("/list") public Result> getMusicList( @RequestParam(defaultValue = "1") Integer page, @@ -72,6 +75,7 @@ public class MusicController { * @param size 每页大小 * @return 响应结果 */ + @SaIgnore @GetMapping("/singer/{singerId}") public Result> getMusicListBySinger( @PathVariable Long singerId, @@ -87,6 +91,7 @@ public class MusicController { * @param limit 限制数量 * @return 响应结果 */ + @SaIgnore @GetMapping("/latest") public Result> getLatestMusic(@RequestParam(defaultValue = "10") Integer limit) { List musicList = musicService.getLatestMusic(limit); @@ -99,6 +104,7 @@ public class MusicController { * @param limit 限制数量 * @return 响应结果 */ + @SaIgnore @GetMapping("/hot") public Result> getHotMusic(@RequestParam(defaultValue = "10") Integer limit) { List musicList = musicService.getHotMusic(limit); @@ -113,6 +119,7 @@ public class MusicController { * @param size 每页大小 * @return 响应结果 */ + @SaIgnore @GetMapping("/search") public Result> searchMusic( @RequestParam String keyword, @@ -214,6 +221,7 @@ public class MusicController { * @param id 音乐ID * @return 响应结果 */ + @SaIgnore @PostMapping("/{id}/play") public Result playMusic(@PathVariable Long id) { MusicDTO musicDTO = musicService.playMusic(id); @@ -242,6 +250,7 @@ public class MusicController { * @param id 音乐ID * @return 响应结果 */ + @SaCheckLogin @GetMapping("/{id}/status") public Result getMusicStatus(@PathVariable Long id) { Long userId = StpUtil.getLoginIdDefaultNull() != null ? StpUtil.getLoginIdAsLong() : null; diff --git a/music-houduan/src/main/java/com/test/musichouduan/controller/PlaylistController.java b/music-houduan/src/main/java/com/test/musichouduan/controller/PlaylistController.java index b80a6ed..98127c5 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/controller/PlaylistController.java +++ b/music-houduan/src/main/java/com/test/musichouduan/controller/PlaylistController.java @@ -2,6 +2,7 @@ package com.test.musichouduan.controller; import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaIgnore; import com.test.musichouduan.dto.PageResult; import com.test.musichouduan.dto.PlaylistDTO; import com.test.musichouduan.dto.Result; @@ -28,6 +29,7 @@ public class PlaylistController { * @param id 歌单ID * @return 响应结果 */ + @SaIgnore @GetMapping("/{id}") public Result getPlaylistById(@PathVariable Long id) { PlaylistDTO playlistDTO = playlistService.getPlaylistById(id); @@ -43,6 +45,7 @@ public class PlaylistController { * @param typeId 类型ID * @return 响应结果 */ + @SaIgnore @GetMapping("/list") public Result> getPlaylistList( @RequestParam(defaultValue = "1") Integer page, @@ -59,6 +62,7 @@ public class PlaylistController { * @param limit 限制数量 * @return 响应结果 */ + @SaIgnore @GetMapping("/latest") public Result> getLatestPlaylist(@RequestParam(defaultValue = "10") Integer limit) { List playlistList = playlistService.getLatestPlaylist(limit); @@ -71,6 +75,7 @@ public class PlaylistController { * @param limit 限制数量 * @return 响应结果 */ + @SaIgnore @GetMapping("/hot") public Result> getHotPlaylist(@RequestParam(defaultValue = "10") Integer limit) { List playlistList = playlistService.getHotPlaylist(limit); @@ -85,6 +90,7 @@ public class PlaylistController { * @param size 每页大小 * @return 响应结果 */ + @SaIgnore @GetMapping("/search") public Result> searchPlaylist( @RequestParam String keyword, @@ -101,6 +107,7 @@ public class PlaylistController { * @param size 每页大小 * @return 响应结果 */ + @SaIgnore @GetMapping("/official") public Result> getOfficialPlaylist( @RequestParam(defaultValue = "1") Integer page, diff --git a/music-houduan/src/main/java/com/test/musichouduan/controller/SingerController.java b/music-houduan/src/main/java/com/test/musichouduan/controller/SingerController.java index fd09ece..882d628 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/controller/SingerController.java +++ b/music-houduan/src/main/java/com/test/musichouduan/controller/SingerController.java @@ -2,6 +2,7 @@ package com.test.musichouduan.controller; import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaIgnore; import com.test.musichouduan.dto.PageResult; import com.test.musichouduan.dto.Result; import com.test.musichouduan.dto.SingerDTO; @@ -28,6 +29,7 @@ public class SingerController { * @param id 歌手ID * @return 响应结果 */ + @SaIgnore @GetMapping("/{id}") public Result getSingerById(@PathVariable Long id) { SingerDTO singerDTO = singerService.getSingerById(id); @@ -43,6 +45,7 @@ public class SingerController { * @param typeId 类型ID * @return 响应结果 */ + @SaIgnore @GetMapping("/list") public Result> getSingerList( @RequestParam(defaultValue = "1") Integer page, @@ -61,6 +64,7 @@ public class SingerController { * @param size 每页大小 * @return 响应结果 */ + @SaIgnore @GetMapping("/search") public Result> searchSinger( @RequestParam String keyword, @@ -76,6 +80,7 @@ public class SingerController { * @param limit 限制数量 * @return 响应结果 */ + @SaIgnore @GetMapping("/latest") public Result> getLatestSinger(@RequestParam(defaultValue = "10") Integer limit) { List singerList = singerService.getLatestSinger(limit); @@ -88,6 +93,7 @@ public class SingerController { * @param limit 限制数量 * @return 响应结果 */ + @SaIgnore @GetMapping("/hot-list") public Result> getHotSinger(@RequestParam(defaultValue = "10") Integer limit) { List singerList = singerService.getHotSinger(limit); @@ -101,6 +107,7 @@ public class SingerController { * @param avatar 头像文件 * @return 响应结果 */ + @SaIgnore @SaCheckRole("admin") @PostMapping("/add") public Result addSinger( @@ -118,6 +125,7 @@ public class SingerController { * @param avatar 头像文件 * @return 响应结果 */ + @SaCheckRole("admin") @PutMapping("/{id}") public Result updateSinger( diff --git a/music-houduan/src/main/java/com/test/musichouduan/controller/TypeController.java b/music-houduan/src/main/java/com/test/musichouduan/controller/TypeController.java index 5d8d65e..e3d6714 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/controller/TypeController.java +++ b/music-houduan/src/main/java/com/test/musichouduan/controller/TypeController.java @@ -1,6 +1,7 @@ package com.test.musichouduan.controller; import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaIgnore; import com.test.musichouduan.dto.*; import com.test.musichouduan.service.TypeService; import org.springframework.beans.factory.annotation.Autowired; @@ -23,6 +24,7 @@ public class TypeController { * * @return 响应结果 */ + @SaIgnore @GetMapping("/music") public Result> getMusicTypeList() { List typeList = typeService.getMusicTypeList(); diff --git a/music-houduan/src/main/java/com/test/musichouduan/controller/UserController.java b/music-houduan/src/main/java/com/test/musichouduan/controller/UserController.java index 2872ec8..2b527c9 100644 --- a/music-houduan/src/main/java/com/test/musichouduan/controller/UserController.java +++ b/music-houduan/src/main/java/com/test/musichouduan/controller/UserController.java @@ -2,6 +2,7 @@ package com.test.musichouduan.controller; import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.stp.StpUtil; import com.test.musichouduan.dto.*; import com.test.musichouduan.service.FileService; @@ -34,6 +35,7 @@ public class UserController { * @param request 注册请求 * @return 响应结果 */ + @SaIgnore @Operation(summary = "用户注册", description = "新用户注册接口") @PostMapping("/register") public Result register(@Parameter(description = "注册信息") @Validated @RequestBody RegisterRequest request) { @@ -47,6 +49,7 @@ public class UserController { * @param request 登录请求 * @return 响应结果 */ + @SaIgnore @Operation(summary = "用户登录", description = "用户登录接口,登录成功后返回用户信息和令牌") @PostMapping("/login") public Result login(@Parameter(description = "登录信息") @Validated @RequestBody LoginRequest request) {