| | |
| | | package com.whyc.controller; |
| | | |
| | | import com.whyc.dto.Response; |
| | | import com.whyc.dto.SignDTO; |
| | | import com.whyc.pojo.UserInf; |
| | | import com.whyc.service.LoginService; |
| | | import com.whyc.service.UserService; |
| | | import com.whyc.util.ActionUtil; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import javax.servlet.ServletException; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.servlet.http.HttpSession; |
| | | import javax.swing.*; |
| | | import java.io.IOException; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.security.SecureRandom; |
| | | |
| | | @RequestMapping("login") |
| | | @RestController |
| | | @Api(tags = "登录") |
| | | public class LoginController { |
| | | public class LoginController extends BaseController{ |
| | | |
| | | @Autowired |
| | | private LoginService service; |
| | | @Autowired |
| | | private UserService userService; |
| | | |
| | | @PostMapping("login") |
| | | @ApiOperation(value ="登录") |
| | | @ApiOperation(value ="登录-账号密码") |
| | | public Response login(@RequestParam String userName, String password,HttpServletRequest request){ |
| | | return service.login(userName,password,request); |
| | | } |
| | | @PostMapping("loginByRSA") |
| | | @ApiOperation(value ="登录-账号密码加密") |
| | | public Response loginByRSA(@RequestParam String userName, String password,String deliveredCode,HttpServletRequest request,Integer validCode){ |
| | | return service.loginByRSA(userName,password,deliveredCode,request,validCode); |
| | | } |
| | | |
| | | @PostMapping("loginWithUKey") |
| | | @ApiOperation(value ="登录-uKey-TODO") |
| | | public Response loginWithUKey(@RequestParam String userName, |
| | | @RequestParam String password, |
| | | @RequestParam String uKeyId, |
| | | HttpServletRequest request){ |
| | | return service.loginWithUKey(userName,password,uKeyId,request); |
| | | } |
| | | |
| | | @GetMapping("/getRandom") |
| | | @ApiOperation(value = "uKey校验前生成随机数") |
| | | public Response getRandom() throws NoSuchAlgorithmException { |
| | | //int randomNum = (int)((Math.random()*9+1)*10000); |
| | | SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); |
| | | int randomNum = random.nextInt(100000); |
| | | ActionUtil.getSession().setAttribute("uKeyRandom",String.valueOf(randomNum)); |
| | | return new Response().set(1,randomNum); |
| | | } |
| | | @PostMapping("/verify") |
| | | @ApiOperation(value = "校验签名") |
| | | public Response verify(@RequestBody SignDTO signDTO){ |
| | | Response response = new Response(); |
| | | //前端将字符\替换成了huodongwei,这里再转回来 |
| | | signDTO.setInPath(signDTO.getInPath().replace("huodongwei","\\")); |
| | | //通过uKeyId获取公钥XY |
| | | //UserInf userInf = userService.getPublicXYByUKeyId(signDTO.getUKeyId()); |
| | | UserInf userInf = userService.getUserByUKeyId(signDTO.getUKeyId()); |
| | | //获取之前生成的随机数 |
| | | String uKeyRandom = (String) ActionUtil.getSession().getAttribute("uKeyRandom"); |
| | | boolean b = com.whyc.softkey.jsyunew3.YtVerfiy(userInf.getUName(), uKeyRandom, signDTO.getPublicX(), signDTO.getPublicY(), signDTO.getSign(), signDTO.getInPath()); |
| | | long lastError = com.whyc.softkey.jsyunew3.get_LastError(); |
| | | if(b && lastError==0){ |
| | | response.set(1,"校验成功"); |
| | | }else { |
| | | if (lastError == 0){ |
| | | response.set(0,"校验失败"); |
| | | }else{ |
| | | String baseMsg ="校验失败,原因为:"; |
| | | switch ((int) lastError){ |
| | | case -82 : response.setMsg(baseMsg+"写数据到加密锁储存器时错误,可能是写密码错误");break; |
| | | case -81 : |
| | | case -88 : response.setMsg(baseMsg+"输入的地址空间超出");break; |
| | | case -47 : response.setMsg(baseMsg+"进行读写字符串时,地址空间超出");break; |
| | | case -92 : response.setMsg(baseMsg+"不存在指定的加密锁");break; |
| | | case -93 : |
| | | case -94 : response.setMsg(baseMsg+"操作加密锁时错误");break; |
| | | case -83 : response.setMsg(baseMsg+"从加密锁读取数据时错误,可能是读密码错误");break; |
| | | case -46 : response.setMsg(baseMsg+"使用控件时,输入的字符不能是空字符串");break; |
| | | case -51 : response.setMsg(baseMsg+"打开USB文件句柄失败(iKey)");break; |
| | | } |
| | | } |
| | | } |
| | | return response; |
| | | } |
| | | |
| | | |
| | | @PostMapping("logout") |
| | | @ApiOperation(value ="退出登录") |
| | |
| | | response.setContentType("text/html;charset=utf-8"); |
| | | response.getWriter().write("您未获取到接口的调用授权,拒绝访问!"); |
| | | } |
| | | |
| | | @PostMapping("/check") |
| | | @ApiOperation(value = "判断是否有另一同一账号登录的用户") |
| | | public Response check(){ |
| | | Response response = service.checkUser(); |
| | | //当前用户 |
| | | HttpSession session = ActionUtil.getSession(); |
| | | UserInf uinf=(UserInf) session.getAttribute("user"); |
| | | if(response.getCode() == 1){ |
| | | session.invalidate(); //清除当前的session; //清除session |
| | | } |
| | | return response; |
| | | } |
| | | |
| | | @GetMapping("loginNoPass") |
| | | @ApiOperation(value = "免密登录") |
| | | public Response loginNoPass(@RequestParam int uId,HttpServletRequest request){ |
| | | return service.loginNoPass(uId,request); |
| | | } |
| | | |
| | | } |