住房和城市建设部网站做网站视频背景
在 Spring Security 中,你可以通过实现特定的接口或扩展某些类来自定义各种处理器,例如登录成功处理器、登录失败处理器、无权限处理器和登出成功处理器。
以下是每种处理器的具体实现方法:
【示例】首先创建统一的响应结果类和响应结果编码枚举,方便后续示例中使用。
(1)创建 ApiResponseResult 响应结果类:
package com.pjb.ApiModel;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** 响应结果类* @author pan_junbiao**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ApiResponseResult<T>
{private int code;private String message;private T data;public ApiResponseResult(ApiResponseCode apiResponseCode){this.code = apiResponseCode.getCode();this.message = apiResponseCode.getMessage();}public ApiResponseResult(ApiResponseCode apiResponseCode, T data){this.code = apiResponseCode.getCode();this.message = apiResponseCode.getMessage();this.data = data;}
}
(2)创建 ApiResponseCode 响应结果编码枚举:
package com.pjb.ApiModel;/*** 响应结果编码枚举* @author pan_junbiao**/
public enum ApiResponseCode
{LOGIN_SUCCESS(20000, "登录成功"),LOGIN_FAILURE(30000, "登录失败"),AUTHORIZATION_FAILURE(40300, "403无权限"),LOGOUT_SUCCESS(50000, "注销成功");private final int code;private final String message;ApiResponseCode(int code, String message){this.code = code;this.message = message;}public int getCode(){return code;}public String getMessage(){return message;}
}
1、登录成功处理器
登录成功处理器,需要实现 AuthenticationSuccessHandler 接口,当登录认证成功后会执行调用。
1.1 登录成功后重定向到首页
package com.pjb.handler;import com.pjb.ApiModel.ApiResponseCode;
import com.pjb.ApiModel.ApiResponseResult;
import com.pjb.util.JacksonUtil;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.stereotype.Component;import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;/*** 登录成功处理类*/
@Component
public class LoginSuccessHandler implements AuthenticationSuccessHandler
{@Overridepublic void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException{//登录成功,重定向到首页response.sendRedirect("/");}
}
1.2 登录成功后返回统一响应
package com.pjb.handler;import com.pjb.ApiModel.ApiResponseCode;
import com.pjb.ApiModel.ApiResponseResult;
import com.pjb.util.JacksonUtil;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
import org.springframework.ste