• Spring Security 使用Ajax登陆无法跳转页面解决方法


    使用Security的朋友都知道,使用Security后,不再需要我们自己过多的(还需要写少量代码)写登陆的逻辑,只需要自己在html的登陆表单上面定义好输入框name为:username和password,Security就可以收到账户和密码了。

    如果我们采用Ajax登陆,正常来说Ajax需要判断服务器的状态码,根据状态码进一步操作。但是由于不再需要自己过多的登陆逻辑代码,从而在关于返回状态码的事情上有所忽略。

    所以为了避免Ajax因为收不到服务器返回的状态码导致无法登陆,我们应该按照以下的方法进行操作。

    1. 实现Security登陆成功处理器org.springframework.security.web.authentication.AuthenticationSuccessHandler

    2. 重写它的默认处理方法onAuthenticationSuccess

    3. 在onAuthenticationSuccess方法的内部添加响应提的内容类型

      response.setContentType("application/json;charset=utf-8"8);
      

    4.添加上响应的状态码

    		private ObjectMapper mapper;
    		// 添加一个map对象,方便等下转换成字符串
            Map json = new HashMap<String ,Object>();
            json.put("msg","成功");
            json.put("code",0);
            // 设置编码
            response.setContentType(FebsConstant.JSON_UTF8);
            // 这里是使用:jackon的jar包,转换成json对象并写入到响应体,
            response.getWriter().write(mapper.writeValueAsString(json));
    
    1. 你的浏览器就会收到服务器的json

  • 相关阅读:
    HDOJ-1106
    二进制神题--一千个苹果问题
    HDOJ-2160
    HDOJ-2058
    HDOJ-2045
    HDOJ-2034
    HDOJ-2054
    HDOJ-2036
    F
    B
  • 原文地址:https://www.cnblogs.com/gobyte/p/10753475.html
Copyright © 2020-2023  润新知