LoginController.java
4.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package com.huaheng.pc.system.user.controller;
import com.huaheng.common.utils.ServletUtils;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.domain.RetCode;
import com.huaheng.pc.system.user.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Random;
/**
* 登录验证
*
* @author huaheng
*/
@Controller
public class LoginController extends BaseController
{
private static String base64hash = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@Autowired
private IUserService userService;
// @Autowired
// private ICompanyService companyService;
@GetMapping("/login")
public String login(HttpServletRequest request, HttpServletResponse response)
{
// 如果是Ajax请求,返回Json字符串。
if (ServletUtils.isAjaxRequest(request))
{
AjaxResult ajaxResult = AjaxResult.setResult(RetCode.UNAUTHORIZED,"未登录或登录超时。请重新登录", null);
return ServletUtils.renderString(response, ajaxResult.toString());
}
return "login";
}
// @PostMapping(value = "/login")
// @ResponseBody
// public AjaxResult ajaxLogin(String username, String password, String warehouse, Boolean rememberMe)
// {
// String[] warehouseArray = warehouse.split(",");
// Integer warehouseId = Integer.valueOf(warehouseArray[0]);
// String warehouseCode = warehouseArray[1];
// AjaxResult ajaxResult = ajaxLogin(username, password, warehouseId, warehouseCode, false);
// return ajaxResult;
// }
/**
* 网页session登录
* */
@PostMapping(value = "/login")
@ResponseBody
public AjaxResult ajaxLogin(String loginName, String password, String warehouse, String warehouseCode, Boolean rememberMe,HttpServletRequest request) {
Date date=new Date();
String timestamp = String.valueOf(date.getTime());
String name = LoginController.atob(loginName);
String passwd = LoginController.atob(password);
if (timestamp.substring(0,timestamp.length()-4).equals(passwd.substring(0,timestamp.length()-4))!=true)
{
return AjaxResult.error("账号或者密码错误");
}
if (StringUtils.isNotEmpty(warehouse))
{
String[] warehouseArray = warehouse.split(",");
warehouseCode = warehouseArray[1];
}
loginName=name.substring(3,name.length()-3);
password=passwd.substring(13,passwd.length()-5);
AjaxResult ajaxResult = userService.login(loginName, password, warehouseCode, rememberMe);
return ajaxResult;
}
@GetMapping("/unauth")
public String unauth()
{
return "/error/unauth";
}
public static String atob(String inStr) {
if (inStr == null)
return null;
inStr = inStr.replaceAll("\\s|=", "");
StringBuilder result = new StringBuilder();
int cur;
int prev = -1;
int mod;
int i = 0;
while (i < inStr.length()) {
cur = base64hash.indexOf(inStr.charAt(i));
mod = i % 4;
switch (mod) {
case 0:
break;
case 1:
result.append(String.valueOf((char) (prev << 2 | cur >> 4)));
break;
case 2:
result.append(String.valueOf((char) ((prev & 0x0f) << 4 | cur >> 2)));
break;
case 3:
result.append(String.valueOf((char) ((prev & 3) << 6 | cur)));
break;
}
prev = cur;
i++;
}
return result.toString();
}
/**
* 通过用户名获取可以登陆的仓库列表
*/
@PostMapping("/getWarehouseByUserCode")
@ResponseBody
public AjaxResult getWarehouseByUserCode(String loginName)
{
if (StringUtils.isNotEmpty(loginName))
{
List<Map<String, Object>> list = userService.getWarehouseByUserCode(loginName);
return AjaxResult.success(list);
}
else
{
return AjaxResult.error("用户名不能为空");
}
}
}