From dc31792dc1b8ad1658e49ba8fce9a1be924e6fbb Mon Sep 17 00:00:00 2001 From: wu <731351411@qq.com> Date: 星期四, 30 十一月 2023 08:44:04 +0800 Subject: [PATCH] 理片笼测试修改 --- springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 103 insertions(+), 0 deletions(-) diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java new file mode 100644 index 0000000..76d6d6a --- /dev/null +++ b/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java @@ -0,0 +1,103 @@ +package com.example.springboot.controller; + +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.example.springboot.security.util.JwtUtil; +import com.example.springboot.security.util.SecurityUtil; +import com.example.springboot.entity.User; +import com.example.springboot.entity.vo.Result; +import com.example.springboot.entity.vo.UserVo; +import com.example.springboot.security.constant.SystemConstant; +import com.example.springboot.service.UserService; +import com.example.springboot.util.ValidatorUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.DisabledAccountException; +import org.apache.shiro.authc.ExcessiveAttemptsException; +import org.apache.shiro.authc.ExpiredCredentialsException; +import org.apache.shiro.authc.IncorrectCredentialsException; +import org.apache.shiro.authc.LockedAccountException; +import org.apache.shiro.authc.UnknownAccountException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.authz.UnauthorizedException; +import org.apache.shiro.crypto.hash.SimpleHash; +import org.apache.shiro.util.ByteSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; + +@RestController + +@Slf4j +@Api(tags = "鐧诲綍鍜屾敞鍐�") +public class DefaultController { + @Autowired + private UserService userService; + + @ApiOperation(value = "娉ㄥ唽鐢ㄦ埛") + @PostMapping("/register") + public Result register(@RequestBody User user) { + // 鏍¢獙鍙傛暟 + if (StringUtils.isNotEmpty(user.getEmail())) { + ValidatorUtil.validateEntity(user); + } + + Integer integer = userService.countByUsername(user.getUsername()); + if (integer > 0) return Result.fail("鐢ㄦ埛鍚嶅凡缁忓瓨鍦�"); + // 閫氳繃shiro榛樿鐨勫姞瀵嗗伐鍏风被涓烘敞鍐岀敤鎴风殑瀵嗙爜杩涜鍔犲瘑 + Object salt = ByteSource.Util.bytes(SystemConstant.JWT_SECRET_KEY); + String md5 = new SimpleHash("MD5", user.getPassword(), salt, 1024).toHex(); + user.setPassword(md5); + userService.saveOrUpdate(user); + return Result.success(); + } + + @ApiOperation(value = "鐧诲綍") + + @PostMapping("/login") + public Result login(@RequestBody UserVo userVO) { + ValidatorUtil.validateEntity(userVO); + if (!SecurityUtils.getSubject().isAuthenticated()) { + UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(userVO.getUsername(), userVO.getPassword(), true); + try { + // shiro楠岃瘉鐢ㄦ埛鍚嶅瘑鐮� + SecurityUtils.getSubject().login(usernamePasswordToken); + // 鐢熸垚token + String token = JwtUtil.createToken(userVO.getUsername(), false); + // 灏嗙敤鎴锋埛鍚嶅拰token杩斿洖 + HashMap<String, String> map = new HashMap<>(); + map.put("username", userVO.getUsername()); + map.put("Authorization", token); + map.put("role_id", SecurityUtil.getCurrentUser().getRoleId().toString()); + return Result.success(map); + } catch (IncorrectCredentialsException e) { + return Result.fail("鐧诲綍瀵嗙爜閿欒"); + } catch (ExcessiveAttemptsException e) { + return Result.fail("鐧诲綍澶辫触娆℃暟杩囧"); + } catch (LockedAccountException e) { + return Result.fail("甯愬彿宸茶閿佸畾"); + } catch (DisabledAccountException e) { + return Result.fail("甯愬彿宸茶绂佺敤"); + } catch (ExpiredCredentialsException e) { + return Result.fail("璇烽噸鏂扮櫥褰�"); + + } catch (UnknownAccountException e) { + return Result.fail("甯愬彿涓嶅瓨鍦�"); + } catch (UnauthorizedException e) { + return Result.fail("鎮ㄦ病鏈夊緱鍒扮浉搴旂殑鎺堟潈"); + } catch (Exception e) { + e.printStackTrace(); + return Result.fail("鐧诲綍澶辫触锛侊紒锛�"); + } + } + return Result.fail("浣犲凡缁忕櫥褰曚簡"); + } + + @ApiOperation(value = "娉ㄥ唽鏃舵牎楠岀敤鎴峰悕鏄惁瀛樺湪") + @GetMapping("/countUsername") + public Result countUsername(String username) { + return Result.success(userService.countByUsername(username)); + } +} -- Gitblit v1.8.0