Spring Security-在REST服务中将凭证作为JSON而不是常规格式发送

Spring Security-在REST服务中将凭证作为JSON而不是常规格式发送,第1张

Spring Security-在REST服务中将凭证作为JSON而不是常规格式发送

好吧,除非您编写 getUserNamePasswordAuthenticationToken 主体,否则它一定不能起作用。

实际上,您必须阅读HttpServletRequest的请求正文,通过Jackson或任何其他映射方式对其进行解析,并使用它创建UsernamePasswordAuthenticationToken。

使用Jackson(根据您的Spring版本选择正确的版本),我将创建一个像这样的简单bean:

@JsonIgnoreProperties(ignoreUnkown=true)    public LoginRequest{     private String email;     private String password;     // getters & setters    }

使用它来映射它的请求主体:

private UsernamePasswordAuthenticationToken getUserNamePasswordAuthenticationToken(HttpServletRequest request)  throws IOException{    StringBuffer sb = new StringBuffer();    BufferedReader bufferedReader = null;    String content = "";    LoginRequest sr = null;    try {        bufferedReader =  request.getReader()        char[] charBuffer = new char[128];        int bytesRead;        while ( (bytesRead = bufferedReader.read(charBuffer)) != -1 ) { sb.append(charBuffer, 0, bytesRead);        }        content = sb.toString();        ObjectMapper objectMapper = new ObjectMapper();        try{ sr = objectMapper.readValue(content, LoginRequest.class);        }catch(Throwable t){ throw new IOException(t.getMessage(), t);        }    } catch (IOException ex) {        throw ex;    } finally {        if (bufferedReader != null) { try {     bufferedReader.close(); } catch (IOException ex) {     throw ex; }        }    }    return new UsernamePasswordAuthenticationToken(sr.getEmail(), sr.getPassword());

}

PD Yo必须使用Post,您将永远无法使用GET发布请求正文



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5490353.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存