java是实现这个spring预认证过滤器的更好方法吗?
这个类困扰着我,我可能需要一些关于重构它的最佳方法的输入。这是一个spring安全过滤器,因此无论何时有人登录,都会调用这两个方法——getPreAuthenticatedPrincipal(HttpServletRequest请求)和getPreAuthenticatedCredentials(HttpServletRequest请求)
理想情况下,您应该能够满足您的请求。getParameter(“用户名”)和请求。getParameter(“password”)-但这些参数在我的应用程序中返回null,并且您只能执行请求。getInputStream()一次-之后,该方法返回null
因此,我必须创建一个JSONObject成员变量,并将请求参数存储在JSONObject中,以便在这两种方法中使用。有没有更好的方法来设计这个类
谢谢你的意见
public class UserAuthenticationFilter extends AbstractPreAuthenticatedProcessingFilter {
protected JSONObject jsonObj = null;
@Override
protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {
try {
String jsonString = IOUtils.toString(request.getInputStream());
System.out.println(jsonString);
if (jsonObj == null) {
jsonObj = new JSONObject(jsonString);
}
} catch (IOException e) { // TODO Auto-generated catch block
e.printStackTrace();
}
String userName = jsonObj.getString("username");
System.out.println(userName);
return userName;
}
@Override
protected Object getPreAuthenticatedCredentials(HttpServletRequest request) {
String passWd = jsonObj.getString("password");
System.out.println(passWd); return passWd;
}
}
共 (0) 个答案