赞
踩
- public class JwtLoginFilter extends UsernamePasswordAuthenticationFilter {
-
- private AuthenticationManager authenticationManager;
- private RsaKeyProperties prop;
-
- public JwtLoginFilter(AuthenticationManager authenticationManager, RsaKeyProperties prop) {
- this.authenticationManager = authenticationManager;
- this.prop = prop;
- }
-
- public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
- try {
- SysUser sysUser = new ObjectMapper().readValue(request.getInputStream(), SysUser.class);
- UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(sysUser.getUsername(), sysUser.getPassword());
- return authenticationManager.authenticate(authRequest);
- }catch (Exception e){
- try {
- response.setContentType("application/json;charset=utf-8");
- response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
- PrintWriter out = response.getWriter();
- Map resultMap = new HashMap();
- resultMap.put("code", HttpServletResponse.SC_UNAUTHORIZED);
- resultMap.put("msg", "用户名或密码错误!");
- out.write(new ObjectMapper().writeValueAsString(resultMap));
- out.flush();
- out.close();
- }catch (Exception outEx){
- outEx.printStackTrace();
- }
- throw new RuntimeException(e);
- }
- }
-
- public void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {
- SysUser user = new SysUser();
- user.setUsername(authResult.getName());
- user.setRoles((List<SysRole>) authResult.getAuthorities());
- String token = JwtUtils.generateTokenExpireInMinutes(user, prop.getPrivateKey(), 24 * 60);
- response.addHeader("Authorization", "Bearer "+token);
- try {
- response.setContentType("application/json;charset=utf-8");
- response.setStatus(HttpServletResponse.SC_OK);
- PrintWriter out = response.getWriter();
- Map resultMap = new HashMap();
- resultMap.put("code", HttpServletResponse.SC_OK);
- resultMap.put("msg", "认证通过!");
- out.write(new ObjectMapper().writeValueAsString(resultMap));
- out.flush();
- out.close();
- }catch (Exception outEx){
- outEx.printStackTrace();
- }
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。