更好的方法来实现这个春季预认证过滤器?

时间:2015-12-15 22:44:54

标签: java

这个课让我感到困扰,我可能需要一些输入才能重构它。这是一个spring安全过滤器,因此只要有人登录,就会调用两个方法 - getPreAuthenticatedPrincipal(HttpServletRequest请求)和getPreAuthenticatedCredentials(HttpServletRequest请求)。

理想情况下,你应该可以执行request.getParameter(“username”)和request.getParameter(“password”) - 但是那些在我的应用程序中返回null,你只能执行一次request.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 个答案:

没有答案