feat(security): 添加 SaIgnore 注解以允许未登录用户访问特定接口

- 在 BannerController、CommentController、HotMusicController、MusicController、PlaylistController、SingerController、TypeController 和 UserController 中添加了 SaIgnore 注解
- 这些注解允许未登录用户访问被注解的接口,以便在前端页面中展示相关信息
This commit is contained in:
ikmkj
2025-07-26 09:49:24 +08:00
parent 4deaf59123
commit 9fbaacc36a
8 changed files with 37 additions and 0 deletions

View File

@@ -1,6 +1,8 @@
package com.test.musichouduan.controller; package com.test.musichouduan.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckRole; import cn.dev33.satoken.annotation.SaCheckRole;
import cn.dev33.satoken.annotation.SaIgnore;
import com.test.musichouduan.dto.BannerDTO; import com.test.musichouduan.dto.BannerDTO;
import com.test.musichouduan.dto.PageResult; import com.test.musichouduan.dto.PageResult;
import com.test.musichouduan.dto.Result; import com.test.musichouduan.dto.Result;
@@ -43,6 +45,7 @@ public class BannerController {
* *
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@Operation(summary = "获取轮播图列表", description = "获取所有启用状态的轮播图列表") @Operation(summary = "获取轮播图列表", description = "获取所有启用状态的轮播图列表")
@GetMapping("/list") @GetMapping("/list")
public Result<List<BannerDTO>> getBannerList() { public Result<List<BannerDTO>> getBannerList() {

View File

@@ -2,6 +2,7 @@ package com.test.musichouduan.controller;
import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckRole; import cn.dev33.satoken.annotation.SaCheckRole;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import com.test.musichouduan.dto.CommentDTO; import com.test.musichouduan.dto.CommentDTO;
import com.test.musichouduan.dto.PageResult; import com.test.musichouduan.dto.PageResult;

View File

@@ -1,5 +1,8 @@
package com.test.musichouduan.controller; 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.MusicDTO;
import com.test.musichouduan.dto.Result; import com.test.musichouduan.dto.Result;
import com.test.musichouduan.service.MusicService; import com.test.musichouduan.service.MusicService;
@@ -33,6 +36,7 @@ public class HotMusicController {
* @param limit 限制数量 * @param limit 限制数量
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/list") @GetMapping("/list")
public Result<List<MusicDTO>> getHotMusic(@RequestParam(defaultValue = "10") Integer limit) { public Result<List<MusicDTO>> getHotMusic(@RequestParam(defaultValue = "10") Integer limit) {
// 调用 service 层的新方法,该方法会优先从 Redis 缓存获取 // 调用 service 层的新方法,该方法会优先从 Redis 缓存获取

View File

@@ -2,6 +2,7 @@ package com.test.musichouduan.controller;
import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckRole; import cn.dev33.satoken.annotation.SaCheckRole;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import com.test.musichouduan.dto.MusicDTO; import com.test.musichouduan.dto.MusicDTO;
import com.test.musichouduan.dto.MusicStatusDTO; import com.test.musichouduan.dto.MusicStatusDTO;
@@ -30,6 +31,7 @@ public class MusicController {
* @param id 音乐ID * @param id 音乐ID
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/{id}") @GetMapping("/{id}")
public Result<MusicDTO> getMusicById(@PathVariable Long id) { public Result<MusicDTO> getMusicById(@PathVariable Long id) {
Long userId = null; Long userId = null;
@@ -54,6 +56,7 @@ public class MusicController {
* @param typeId 类型ID * @param typeId 类型ID
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/list") @GetMapping("/list")
public Result<PageResult<MusicDTO>> getMusicList( public Result<PageResult<MusicDTO>> getMusicList(
@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "1") Integer page,
@@ -72,6 +75,7 @@ public class MusicController {
* @param size 每页大小 * @param size 每页大小
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/singer/{singerId}") @GetMapping("/singer/{singerId}")
public Result<PageResult<MusicDTO>> getMusicListBySinger( public Result<PageResult<MusicDTO>> getMusicListBySinger(
@PathVariable Long singerId, @PathVariable Long singerId,
@@ -87,6 +91,7 @@ public class MusicController {
* @param limit 限制数量 * @param limit 限制数量
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/latest") @GetMapping("/latest")
public Result<List<MusicDTO>> getLatestMusic(@RequestParam(defaultValue = "10") Integer limit) { public Result<List<MusicDTO>> getLatestMusic(@RequestParam(defaultValue = "10") Integer limit) {
List<MusicDTO> musicList = musicService.getLatestMusic(limit); List<MusicDTO> musicList = musicService.getLatestMusic(limit);
@@ -99,6 +104,7 @@ public class MusicController {
* @param limit 限制数量 * @param limit 限制数量
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/hot") @GetMapping("/hot")
public Result<List<MusicDTO>> getHotMusic(@RequestParam(defaultValue = "10") Integer limit) { public Result<List<MusicDTO>> getHotMusic(@RequestParam(defaultValue = "10") Integer limit) {
List<MusicDTO> musicList = musicService.getHotMusic(limit); List<MusicDTO> musicList = musicService.getHotMusic(limit);
@@ -113,6 +119,7 @@ public class MusicController {
* @param size 每页大小 * @param size 每页大小
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/search") @GetMapping("/search")
public Result<PageResult<MusicDTO>> searchMusic( public Result<PageResult<MusicDTO>> searchMusic(
@RequestParam String keyword, @RequestParam String keyword,
@@ -214,6 +221,7 @@ public class MusicController {
* @param id 音乐ID * @param id 音乐ID
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@PostMapping("/{id}/play") @PostMapping("/{id}/play")
public Result<MusicDTO> playMusic(@PathVariable Long id) { public Result<MusicDTO> playMusic(@PathVariable Long id) {
MusicDTO musicDTO = musicService.playMusic(id); MusicDTO musicDTO = musicService.playMusic(id);
@@ -242,6 +250,7 @@ public class MusicController {
* @param id 音乐ID * @param id 音乐ID
* @return 响应结果 * @return 响应结果
*/ */
@SaCheckLogin
@GetMapping("/{id}/status") @GetMapping("/{id}/status")
public Result<MusicStatusDTO> getMusicStatus(@PathVariable Long id) { public Result<MusicStatusDTO> getMusicStatus(@PathVariable Long id) {
Long userId = StpUtil.getLoginIdDefaultNull() != null ? StpUtil.getLoginIdAsLong() : null; Long userId = StpUtil.getLoginIdDefaultNull() != null ? StpUtil.getLoginIdAsLong() : null;

View File

@@ -2,6 +2,7 @@ package com.test.musichouduan.controller;
import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckRole; import cn.dev33.satoken.annotation.SaCheckRole;
import cn.dev33.satoken.annotation.SaIgnore;
import com.test.musichouduan.dto.PageResult; import com.test.musichouduan.dto.PageResult;
import com.test.musichouduan.dto.PlaylistDTO; import com.test.musichouduan.dto.PlaylistDTO;
import com.test.musichouduan.dto.Result; import com.test.musichouduan.dto.Result;
@@ -28,6 +29,7 @@ public class PlaylistController {
* @param id 歌单ID * @param id 歌单ID
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/{id}") @GetMapping("/{id}")
public Result<PlaylistDTO> getPlaylistById(@PathVariable Long id) { public Result<PlaylistDTO> getPlaylistById(@PathVariable Long id) {
PlaylistDTO playlistDTO = playlistService.getPlaylistById(id); PlaylistDTO playlistDTO = playlistService.getPlaylistById(id);
@@ -43,6 +45,7 @@ public class PlaylistController {
* @param typeId 类型ID * @param typeId 类型ID
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/list") @GetMapping("/list")
public Result<PageResult<PlaylistDTO>> getPlaylistList( public Result<PageResult<PlaylistDTO>> getPlaylistList(
@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "1") Integer page,
@@ -59,6 +62,7 @@ public class PlaylistController {
* @param limit 限制数量 * @param limit 限制数量
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/latest") @GetMapping("/latest")
public Result<List<PlaylistDTO>> getLatestPlaylist(@RequestParam(defaultValue = "10") Integer limit) { public Result<List<PlaylistDTO>> getLatestPlaylist(@RequestParam(defaultValue = "10") Integer limit) {
List<PlaylistDTO> playlistList = playlistService.getLatestPlaylist(limit); List<PlaylistDTO> playlistList = playlistService.getLatestPlaylist(limit);
@@ -71,6 +75,7 @@ public class PlaylistController {
* @param limit 限制数量 * @param limit 限制数量
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/hot") @GetMapping("/hot")
public Result<List<PlaylistDTO>> getHotPlaylist(@RequestParam(defaultValue = "10") Integer limit) { public Result<List<PlaylistDTO>> getHotPlaylist(@RequestParam(defaultValue = "10") Integer limit) {
List<PlaylistDTO> playlistList = playlistService.getHotPlaylist(limit); List<PlaylistDTO> playlistList = playlistService.getHotPlaylist(limit);
@@ -85,6 +90,7 @@ public class PlaylistController {
* @param size 每页大小 * @param size 每页大小
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/search") @GetMapping("/search")
public Result<PageResult<PlaylistDTO>> searchPlaylist( public Result<PageResult<PlaylistDTO>> searchPlaylist(
@RequestParam String keyword, @RequestParam String keyword,
@@ -101,6 +107,7 @@ public class PlaylistController {
* @param size 每页大小 * @param size 每页大小
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/official") @GetMapping("/official")
public Result<PageResult<PlaylistDTO>> getOfficialPlaylist( public Result<PageResult<PlaylistDTO>> getOfficialPlaylist(
@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "1") Integer page,

View File

@@ -2,6 +2,7 @@ package com.test.musichouduan.controller;
import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckRole; import cn.dev33.satoken.annotation.SaCheckRole;
import cn.dev33.satoken.annotation.SaIgnore;
import com.test.musichouduan.dto.PageResult; import com.test.musichouduan.dto.PageResult;
import com.test.musichouduan.dto.Result; import com.test.musichouduan.dto.Result;
import com.test.musichouduan.dto.SingerDTO; import com.test.musichouduan.dto.SingerDTO;
@@ -28,6 +29,7 @@ public class SingerController {
* @param id 歌手ID * @param id 歌手ID
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/{id}") @GetMapping("/{id}")
public Result<SingerDTO> getSingerById(@PathVariable Long id) { public Result<SingerDTO> getSingerById(@PathVariable Long id) {
SingerDTO singerDTO = singerService.getSingerById(id); SingerDTO singerDTO = singerService.getSingerById(id);
@@ -43,6 +45,7 @@ public class SingerController {
* @param typeId 类型ID * @param typeId 类型ID
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/list") @GetMapping("/list")
public Result<PageResult<SingerDTO>> getSingerList( public Result<PageResult<SingerDTO>> getSingerList(
@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "1") Integer page,
@@ -61,6 +64,7 @@ public class SingerController {
* @param size 每页大小 * @param size 每页大小
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/search") @GetMapping("/search")
public Result<PageResult<SingerDTO>> searchSinger( public Result<PageResult<SingerDTO>> searchSinger(
@RequestParam String keyword, @RequestParam String keyword,
@@ -76,6 +80,7 @@ public class SingerController {
* @param limit 限制数量 * @param limit 限制数量
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/latest") @GetMapping("/latest")
public Result<List<SingerDTO>> getLatestSinger(@RequestParam(defaultValue = "10") Integer limit) { public Result<List<SingerDTO>> getLatestSinger(@RequestParam(defaultValue = "10") Integer limit) {
List<SingerDTO> singerList = singerService.getLatestSinger(limit); List<SingerDTO> singerList = singerService.getLatestSinger(limit);
@@ -88,6 +93,7 @@ public class SingerController {
* @param limit 限制数量 * @param limit 限制数量
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/hot-list") @GetMapping("/hot-list")
public Result<List<SingerDTO>> getHotSinger(@RequestParam(defaultValue = "10") Integer limit) { public Result<List<SingerDTO>> getHotSinger(@RequestParam(defaultValue = "10") Integer limit) {
List<SingerDTO> singerList = singerService.getHotSinger(limit); List<SingerDTO> singerList = singerService.getHotSinger(limit);
@@ -101,6 +107,7 @@ public class SingerController {
* @param avatar 头像文件 * @param avatar 头像文件
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@SaCheckRole("admin") @SaCheckRole("admin")
@PostMapping("/add") @PostMapping("/add")
public Result<SingerDTO> addSinger( public Result<SingerDTO> addSinger(
@@ -118,6 +125,7 @@ public class SingerController {
* @param avatar 头像文件 * @param avatar 头像文件
* @return 响应结果 * @return 响应结果
*/ */
@SaCheckRole("admin") @SaCheckRole("admin")
@PutMapping("/{id}") @PutMapping("/{id}")
public Result<SingerDTO> updateSinger( public Result<SingerDTO> updateSinger(

View File

@@ -1,6 +1,7 @@
package com.test.musichouduan.controller; package com.test.musichouduan.controller;
import cn.dev33.satoken.annotation.SaCheckRole; import cn.dev33.satoken.annotation.SaCheckRole;
import cn.dev33.satoken.annotation.SaIgnore;
import com.test.musichouduan.dto.*; import com.test.musichouduan.dto.*;
import com.test.musichouduan.service.TypeService; import com.test.musichouduan.service.TypeService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +24,7 @@ public class TypeController {
* *
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@GetMapping("/music") @GetMapping("/music")
public Result<List<MusicTypeDTO>> getMusicTypeList() { public Result<List<MusicTypeDTO>> getMusicTypeList() {
List<MusicTypeDTO> typeList = typeService.getMusicTypeList(); List<MusicTypeDTO> typeList = typeService.getMusicTypeList();

View File

@@ -2,6 +2,7 @@ package com.test.musichouduan.controller;
import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckRole; import cn.dev33.satoken.annotation.SaCheckRole;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import com.test.musichouduan.dto.*; import com.test.musichouduan.dto.*;
import com.test.musichouduan.service.FileService; import com.test.musichouduan.service.FileService;
@@ -34,6 +35,7 @@ public class UserController {
* @param request 注册请求 * @param request 注册请求
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@Operation(summary = "用户注册", description = "新用户注册接口") @Operation(summary = "用户注册", description = "新用户注册接口")
@PostMapping("/register") @PostMapping("/register")
public Result<UserDTO> register(@Parameter(description = "注册信息") @Validated @RequestBody RegisterRequest request) { public Result<UserDTO> register(@Parameter(description = "注册信息") @Validated @RequestBody RegisterRequest request) {
@@ -47,6 +49,7 @@ public class UserController {
* @param request 登录请求 * @param request 登录请求
* @return 响应结果 * @return 响应结果
*/ */
@SaIgnore
@Operation(summary = "用户登录", description = "用户登录接口,登录成功后返回用户信息和令牌") @Operation(summary = "用户登录", description = "用户登录接口,登录成功后返回用户信息和令牌")
@PostMapping("/login") @PostMapping("/login")
public Result<LoginResultDTO> login(@Parameter(description = "登录信息") @Validated @RequestBody LoginRequest request) { public Result<LoginResultDTO> login(@Parameter(description = "登录信息") @Validated @RequestBody LoginRequest request) {