有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案