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;
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<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.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;

View File

@@ -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<List<MusicDTO>> getHotMusic(@RequestParam(defaultValue = "10") Integer limit) {
// 调用 service 层的新方法,该方法会优先从 Redis 缓存获取

View File

@@ -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<MusicDTO> getMusicById(@PathVariable Long id) {
Long userId = null;
@@ -54,6 +56,7 @@ public class MusicController {
* @param typeId 类型ID
* @return 响应结果
*/
@SaIgnore
@GetMapping("/list")
public Result<PageResult<MusicDTO>> getMusicList(
@RequestParam(defaultValue = "1") Integer page,
@@ -72,6 +75,7 @@ public class MusicController {
* @param size 每页大小
* @return 响应结果
*/
@SaIgnore
@GetMapping("/singer/{singerId}")
public Result<PageResult<MusicDTO>> getMusicListBySinger(
@PathVariable Long singerId,
@@ -87,6 +91,7 @@ public class MusicController {
* @param limit 限制数量
* @return 响应结果
*/
@SaIgnore
@GetMapping("/latest")
public Result<List<MusicDTO>> getLatestMusic(@RequestParam(defaultValue = "10") Integer limit) {
List<MusicDTO> musicList = musicService.getLatestMusic(limit);
@@ -99,6 +104,7 @@ public class MusicController {
* @param limit 限制数量
* @return 响应结果
*/
@SaIgnore
@GetMapping("/hot")
public Result<List<MusicDTO>> getHotMusic(@RequestParam(defaultValue = "10") Integer limit) {
List<MusicDTO> musicList = musicService.getHotMusic(limit);
@@ -113,6 +119,7 @@ public class MusicController {
* @param size 每页大小
* @return 响应结果
*/
@SaIgnore
@GetMapping("/search")
public Result<PageResult<MusicDTO>> searchMusic(
@RequestParam String keyword,
@@ -214,6 +221,7 @@ public class MusicController {
* @param id 音乐ID
* @return 响应结果
*/
@SaIgnore
@PostMapping("/{id}/play")
public Result<MusicDTO> 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<MusicStatusDTO> getMusicStatus(@PathVariable Long id) {
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.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<PlaylistDTO> 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<PageResult<PlaylistDTO>> getPlaylistList(
@RequestParam(defaultValue = "1") Integer page,
@@ -59,6 +62,7 @@ public class PlaylistController {
* @param limit 限制数量
* @return 响应结果
*/
@SaIgnore
@GetMapping("/latest")
public Result<List<PlaylistDTO>> getLatestPlaylist(@RequestParam(defaultValue = "10") Integer limit) {
List<PlaylistDTO> playlistList = playlistService.getLatestPlaylist(limit);
@@ -71,6 +75,7 @@ public class PlaylistController {
* @param limit 限制数量
* @return 响应结果
*/
@SaIgnore
@GetMapping("/hot")
public Result<List<PlaylistDTO>> getHotPlaylist(@RequestParam(defaultValue = "10") Integer limit) {
List<PlaylistDTO> playlistList = playlistService.getHotPlaylist(limit);
@@ -85,6 +90,7 @@ public class PlaylistController {
* @param size 每页大小
* @return 响应结果
*/
@SaIgnore
@GetMapping("/search")
public Result<PageResult<PlaylistDTO>> searchPlaylist(
@RequestParam String keyword,
@@ -101,6 +107,7 @@ public class PlaylistController {
* @param size 每页大小
* @return 响应结果
*/
@SaIgnore
@GetMapping("/official")
public Result<PageResult<PlaylistDTO>> getOfficialPlaylist(
@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.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<SingerDTO> 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<PageResult<SingerDTO>> getSingerList(
@RequestParam(defaultValue = "1") Integer page,
@@ -61,6 +64,7 @@ public class SingerController {
* @param size 每页大小
* @return 响应结果
*/
@SaIgnore
@GetMapping("/search")
public Result<PageResult<SingerDTO>> searchSinger(
@RequestParam String keyword,
@@ -76,6 +80,7 @@ public class SingerController {
* @param limit 限制数量
* @return 响应结果
*/
@SaIgnore
@GetMapping("/latest")
public Result<List<SingerDTO>> getLatestSinger(@RequestParam(defaultValue = "10") Integer limit) {
List<SingerDTO> singerList = singerService.getLatestSinger(limit);
@@ -88,6 +93,7 @@ public class SingerController {
* @param limit 限制数量
* @return 响应结果
*/
@SaIgnore
@GetMapping("/hot-list")
public Result<List<SingerDTO>> getHotSinger(@RequestParam(defaultValue = "10") Integer limit) {
List<SingerDTO> singerList = singerService.getHotSinger(limit);
@@ -101,6 +107,7 @@ public class SingerController {
* @param avatar 头像文件
* @return 响应结果
*/
@SaIgnore
@SaCheckRole("admin")
@PostMapping("/add")
public Result<SingerDTO> addSinger(
@@ -118,6 +125,7 @@ public class SingerController {
* @param avatar 头像文件
* @return 响应结果
*/
@SaCheckRole("admin")
@PutMapping("/{id}")
public Result<SingerDTO> updateSinger(

View File

@@ -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<List<MusicTypeDTO>> 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.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<UserDTO> 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<LoginResultDTO> login(@Parameter(description = "登录信息") @Validated @RequestBody LoginRequest request) {