package com.nanometer.smartlab.controller;
|
|
import com.nanometer.smartlab.entity.SysUser;
|
import com.nanometer.smartlab.service.SysUserService;
|
import com.nanometer.smartlab.util.Constants;
|
import com.nanometer.smartlab.util.FacesUtils;
|
import org.apache.log4j.Logger;
|
import org.apache.shiro.authc.DisabledAccountException;
|
import org.apache.shiro.authc.UnknownAccountException;
|
import org.apache.shiro.authc.UsernamePasswordToken;
|
import org.apache.shiro.subject.Subject;
|
import org.springframework.context.annotation.Scope;
|
import org.springframework.stereotype.Controller;
|
|
import javax.annotation.Resource;
|
|
/**
|
* Created by johnny on 15/12/24.
|
*/
|
@Controller
|
@Scope("request")
|
public class LoginController extends BaseController {
|
|
private static Logger logger = Logger.getLogger(LoginController.class);
|
|
@Resource
|
private MenuController menuController;
|
@Resource
|
private SysUserService sysUserService;
|
|
private String loginAcct;
|
private String loginPwd;
|
private static Byte ischange = 0;
|
|
public String login() {
|
UsernamePasswordToken token = new UsernamePasswordToken(loginAcct, loginPwd);
|
token.setRememberMe(true);
|
|
Subject currentUser = this.getSubject();
|
try {
|
currentUser.login(token);
|
} catch (UnknownAccountException e) {
|
FacesUtils.warn("用户名不存在");
|
return null;
|
} catch (Exception e) {
|
logger.error("登陆失败", e);
|
}
|
|
if (currentUser.isAuthenticated()) {//登录成功进入主页
|
SysUser user = this.sysUserService.getSysUserByAccount(loginAcct);
|
currentUser.getSession(true).setAttribute(Constants.SESSION_USER, user);
|
|
String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
|
if (!loginPwd.matches(PW_PATTERN)) {
|
ischange = 1;
|
}
|
|
this.menuController.initPage();
|
return Constants.PAGE_INDEX + Constants.REDIRECT;
|
} else {
|
FacesUtils.warn("用户名与密码不匹配");
|
}
|
return null;
|
}
|
|
public String logout() {
|
this.getSubject().logout();
|
return Constants.PAGE_LOGIN + Constants.REDIRECT;
|
}
|
|
public String getLoginAcct() {
|
return loginAcct;
|
}
|
|
public void setLoginAcct(String loginAcct) {
|
this.loginAcct = loginAcct;
|
}
|
|
public String getLoginPwd() {
|
return loginPwd;
|
}
|
|
public void setLoginPwd(String loginPwd) {
|
this.loginPwd = loginPwd;
|
}
|
|
|
public Byte getIschange() {
|
return ischange;
|
}
|
|
public void setIschange(Byte ischange) {
|
this.ischange = ischange;
|
}
|
}
|