栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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发布请求正文



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/498232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号