我正在用Java编写Web服务,其中一些要点是进行身份验证。
为了实现这一点,我创建了一个可以应用于任何需要进行身份验证的请求方法的注释,然后我有一个请求过滤器,它拦截带注释的任何请求并执行身份验证检查。
我的问题是:过滤器是否可以在注释中设置一个变量,然后可以访问请求方法,这样我就可以将用户信息从身份验证过滤器传递给请求方法,而无需执行2次相同的检查。 。
基本上它看起来像:
public @interface Authenticated {
UserData user;
}
public Response filterRequest() //for @Authenticated methods
{
user = doAuthentication();
if(user == null)
throw new UnauthorisedException();
//Call the next method, the one with the annotation
return Requests.next();
}
@Authenticated
public Response foo()
{
return new Response("Hello " + user.Name);
}
我知道它在其他语言中的可能性,因为我在C#中已经完成了它,但我无法在Java中找到它的任何引用。 如果注释放在类而不是单个方法上,它是否可行?