要让Shiro在Spring Boot中返回403禁止状态码而不是重定向到login.jsp页面,可以通过以下步骤实现:
shiro.redirectEnabled = false
这样配置后,Shiro将不再自动重定向到login.jsp页面。
import org.apache.shiro.authz.UnauthorizedException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
@ControllerAdvice
public class ShiroExceptionHandler {
@ExceptionHandler(UnauthorizedException.class)
@ResponseStatus(HttpStatus.FORBIDDEN)
public String handleUnauthorizedException() {
return "403 Forbidden";
}
}
在上述代码中,我们使用@ControllerAdvice注解标记该类为全局异常处理器,并使用@ExceptionHandler注解指定处理UnauthorizedException异常的方法。在该方法中,我们返回了一个自定义的403 Forbidden字符串作为响应。
@SpringBootApplication
@ComponentScan(basePackages = "com.example")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在上述代码中,将自定义异常处理器类所在的包路径(com.example)添加到@ComponentScan注解的basePackages属性中。
请注意,以上步骤仅适用于禁用Shiro的重定向功能,并返回403禁止状态码。如果你还需要其他自定义行为或逻辑,可以根据具体需求进行相应的修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云