LoginService.java
4.24 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
package com.huaheng.framework.shiro.service;
import com.huaheng.common.constant.Constants;
import com.huaheng.common.constant.ShiroConstants;
import com.huaheng.common.constant.UserConstants;
import com.huaheng.common.exception.user.CaptchaException;
import com.huaheng.common.exception.user.UserBlockedException;
import com.huaheng.common.exception.user.UserNotExistsException;
import com.huaheng.common.exception.user.UserPasswordNotMatchException;
import com.huaheng.common.utils.DateUtils;
import com.huaheng.common.utils.MessageUtils;
import com.huaheng.common.utils.ServletUtils;
import com.huaheng.common.utils.SystemLogUtils;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.pc.system.user.domain.User;
import com.huaheng.pc.system.user.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
/**
* 登录校验方法
*
* @author huaheng
*/
@Component
public class LoginService
{
@Autowired
private PasswordService passwordService;
@Autowired
private IUserService userService;
/**
* 登录
*/
public User login(String username, String password)
{
// 验证码校验
if (!StringUtils.isEmpty(ServletUtils.getRequest().getAttribute(ShiroConstants.CURRENT_CAPTCHA)))
{
SystemLogUtils.log(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"));
throw new CaptchaException();
}
// 用户名或密码为空 错误
if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password))
{
SystemLogUtils.log(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null"));
throw new UserNotExistsException();
}
// 密码如果不在指定范围内 错误
if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
|| password.length() > UserConstants.PASSWORD_MAX_LENGTH)
{
SystemLogUtils.log(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"));
throw new UserPasswordNotMatchException();
}
// 用户名不在指定范围内 错误
if (username.length() < UserConstants.USERNAME_MIN_LENGTH
|| username.length() > UserConstants.USERNAME_MAX_LENGTH)
{
SystemLogUtils.log(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"));
throw new UserPasswordNotMatchException();
}
// 查询用户信息
User user = userService.selectUserByLoginName(username);
// if (user == null && maybeMobilePhoneNumber(username))
// {
// user = userService.selectUserByPhoneNumber(username);
// }
//
// if (user == null && maybeEmail(username))
// {
// user = userService.selectUserByEmail(username);
// }
if (user == null || user.getDeleted())
{
SystemLogUtils.log(username, Constants.LOGIN_FAIL, MessageUtils.message("user.not.exists"));
throw new UserNotExistsException();
}
passwordService.validate(user, password);
if (user.getEnable() == false)
{
SystemLogUtils.log(username, Constants.LOGIN_FAIL, MessageUtils.message("user.blocked", user.getRemark()));
throw new UserBlockedException(user.getRemark());
}
SystemLogUtils.log(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
recordLoginInfo(user);
return user;
}
// private boolean maybeEmail(String username)
// {
// if (!username.matches(UserConstants.EMAIL_PATTERN))
// {
// return false;
// }
// return true;
// }
//
// private boolean maybeMobilePhoneNumber(String username)
// {
// if (!username.matches(UserConstants.MOBILE_PHONE_NUMBER_PATTERN))
// {
// return false;
// }
// return true;
// }
/**
* 记录登录信息
*/
public void recordLoginInfo(User user)
{
user.setLoginIp(ShiroUtils.getIp());
user.setLoginDate(DateUtils.getNowDate());
userService.updateUserInfo(user);
}
}