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 org.springframework.web.bind.annotation.*;
|
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
import springfox.documentation.annotations.ApiIgnore;
|
|
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 extends BaseController{
|
|
@Autowired
|
private LoginService service;
|
@Autowired
|
private UserService userService;
|
|
@PostMapping("login")
|
@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 ="退出登录")
|
public void logout(){
|
service.logout();
|
}
|
|
/**拦截登录*//*
|
@GetMapping("/")
|
@ApiIgnore
|
public ModelAndView toLoginHtml(HttpServletRequest request, HttpServletResponse response,ModelAndView view) throws ServletException, IOException {
|
//request.getRequestDispatcher("login.html").forward(request,response);
|
System.out.println("转发啦...");
|
//response.setContentType("text/html;charset=utf-8");
|
//response.sendRedirect("http://localhost:8090/login.html");
|
//response.sendRedirect("/login.html");
|
view.setViewName("login");
|
return view;
|
}*/
|
|
/**拦截登录*/
|
@GetMapping("unauthorized")
|
@ApiIgnore
|
public void unauthorized(HttpServletRequest request,HttpServletResponse response) throws IOException {
|
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);
|
}
|
|
}
|