使用注释在控制器方法上添加自定义Spring Security过滤器?

时间:2016-04-27 10:24:35

标签: java spring spring-mvc spring-security java-annotations

我编写了一个名为PowerAuth 2.0的自定义强授权服务器和集成库。

目前,尝试使用它来保护API调用的开发人员可以使用它:

@Controller
@RequestMapping(value = "/session")
public class AuthenticationController {

    @Autowired
    private PowerAuthAuthenticationProvider authenticationProvider;

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public @ResponseBody String login(
            @RequestHeader(value = "X-PowerAuth-Authorization", required = true) String signatureHeader,
            HttpServletRequest servletRequest) throws Exception {

        PowerAuthApiAuthentication apiAuthentication = authenticationProvider.validateRequestSignature(
                servletRequest,
                "/session/login",
                signatureHeader
        );

        if (apiAuthentication != null && apiAuthentication.getUserId() != null) {
            return "OK";
        } else {
            return "NOT OK";
        }
    }
}

我想简化开发人员的工作,以便代码看起来像这样:

@Controller
@RequestMapping(value = "/session")
public class AuthenticationController {

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    @PowerAuth(value = "/session/login")
    public @ResponseBody String login(PowerAuthApiAuthentication apiAuthentication) throws Exception {
        if (apiAuthentication != null && apiAuthentication.getUserId() != null) {
            return "OK";
        } else {
            return "NOT OK";
        }
    }
}

原则(可能?):

  • 不再需要自动身份验证提供程序
  • 使用自定义请求过滤器替换签名验证调用
  • 将请求过滤器绑定到带参数的自定义注释
  • 在方法参数
  • 中注入生成的身份验证对象

由于我在春天不强,你能否就如何做到这一点向我提供指导?

0 个答案:

没有答案