package com.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 登录用户信息注入注解 * *

该注解用于Spring MVC控制器方法参数,实现当前登录用户对象的自动注入, * 简化在Controller中获取认证用户信息的操作流程。

* *

核心功能: *

* *

典型使用场景: *

{@code
 * @GetMapping("/orders")
 * public ResponseEntity> getUserOrders(
 *     @LoginUser User user  // 自动注入当前登录用户
 * ) {
 *     return orderService.findByUser(user);
 * }
 * }
* * @author YourName * @version 1.0 * @since 2023-10-01 */ @Target(ElementType.PARAMETER) // 限定注解仅能标注在方法参数上 @Retention(RetentionPolicy.RUNTIME) // 注解在运行时保留,可通过反射机制读取 public @interface LoginUser { /** * 是否强制要求用户登录(默认true) * *

当设置为true时,如果未检测到登录用户,将抛出未授权异常(401); * 设置为false时,未登录则注入null值。

* * @return 是否强制要求登录状态 */ boolean required() default true; /** * 用户角色类型限制(可选) * *

用于指定允许访问的用户角色类型,如: *

* 不匹配时抛出403禁止访问异常。

* * @return 允许访问的用户角色类型 */ String[] allowedRoles() default {}; }