package com.cnbm.admin.controller; import com.cnbm.admin.handler.LogoutSuccessHandlerImpl; import com.cnbm.admin.params.LoginParam; import com.cnbm.admin.service.CaptchaService; import com.cnbm.admin.service.LoginService; import com.cnbm.admin.utils.ResponseResult; import com.cnbm.common.exception.ErrorCode; import com.cnbm.common.utils.Result; import com.cnbm.common.validator.AssertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * @Author weihongyang * @Date 2022/6/7 3:55 PM * @Version 1.0 */ @RestController @Api(tags="登录管理") @Log4j2 public class LoginController { @Autowired private LoginService loginService; @Autowired private CaptchaService captchaService; @GetMapping("/captcha") @ApiOperation(value = "验证码", produces="application/octet-stream") @ApiImplicitParam(paramType = "query", dataTypeClass=String.class, name = "uuid", required = true,example = "string") public void captcha(HttpServletResponse response, String uuid)throws IOException { //uuid不能为空 AssertUtils.isBlank(uuid, ErrorCode.IDENTIFIER_NOT_NULL); //生成验证码 captchaService.create(response, uuid); } @PostMapping("/login") @ApiOperation(value = "登录") public Result login(HttpServletRequest request, @RequestBody LoginParam loginParam) { return loginService.login(request,loginParam); } @PostMapping("logout") @ApiOperation(value = "退出") public Result logout(HttpServletRequest request){ loginService.logout(request); return new Result(); } }