diff --git a/LoginUser.java b/LoginUser.java new file mode 100644 index 0000000..88e1ad8 --- /dev/null +++ b/LoginUser.java @@ -0,0 +1,61 @@ +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 {}; +}