|
|
@@ -1,22 +1,22 @@
|
|
|
package com.izouma.awesomeadmin.web;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-
|
|
|
import com.izouma.awesomeadmin.constant.AppConstant;
|
|
|
import com.izouma.awesomeadmin.dto.Page;
|
|
|
import com.izouma.awesomeadmin.dto.Result;
|
|
|
import com.izouma.awesomeadmin.dto.TreeNode;
|
|
|
import com.izouma.awesomeadmin.model.DepartInfo;
|
|
|
+import com.izouma.awesomeadmin.model.UserInfo;
|
|
|
import com.izouma.awesomeadmin.service.DepartInfoService;
|
|
|
import com.izouma.awesomeadmin.service.PowerInfoService;
|
|
|
import com.izouma.awesomeadmin.service.SysMenuService;
|
|
|
+import com.izouma.awesomeadmin.service.UserInfoService;
|
|
|
+import com.izouma.awesomeadmin.shiro.PhoneCodeToken;
|
|
|
import com.izouma.awesomeadmin.util.CookieUtil;
|
|
|
import com.izouma.awesomeadmin.util.ExportExcelUtil;
|
|
|
+import org.activiti.engine.IdentityService;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.shiro.SecurityUtils;
|
|
|
+import org.apache.shiro.authc.AuthenticationException;
|
|
|
import org.apache.shiro.authc.UsernamePasswordToken;
|
|
|
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
|
|
import org.apache.shiro.subject.Subject;
|
|
|
@@ -27,12 +27,13 @@ import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
-import com.izouma.awesomeadmin.model.UserInfo;
|
|
|
-import com.izouma.awesomeadmin.service.UserInfoService;
|
|
|
-
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import javax.servlet.http.HttpSession;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* user_info controller类
|
|
|
@@ -48,9 +49,10 @@ public class UserInfoController extends BaseController {
|
|
|
private PowerInfoService powerInfoService;
|
|
|
@Autowired
|
|
|
private SysMenuService sysMenuService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private DepartInfoService departInfoService;
|
|
|
+ @Autowired
|
|
|
+ private IdentityService identityService;
|
|
|
|
|
|
/**
|
|
|
* <p>获取全部记录。</p>
|
|
|
@@ -200,25 +202,45 @@ public class UserInfoController extends BaseController {
|
|
|
//这里会加载自定义的realm
|
|
|
subject.login(token);//把令牌放到login里面进行查询,如果查询账号和密码时候匹配,如果匹配就把user对象获取出来,失败就抛异常
|
|
|
UserInfo user = (UserInfo) subject.getPrincipal();//获取登录成功的用户对象(以前是直接去service里面查)
|
|
|
-
|
|
|
+ identityService.setAuthenticatedUserId(user.getId().toString());
|
|
|
request.getSession(true).setAttribute("superUserId", String.valueOf(user.getId()));
|
|
|
if (remember) {
|
|
|
HttpSession session = request.getSession();
|
|
|
CookieUtil.addCookie(response, "JSESSIONID", session.getId(), 3 * 24 * 60 * 60);
|
|
|
}
|
|
|
return new Result(true, "登录成功");
|
|
|
- } catch (Exception e) {
|
|
|
- //认证登录失败抛出异常
|
|
|
+ } catch (AuthenticationException e) {
|
|
|
+ e.printStackTrace();
|
|
|
return new Result(false, "登录失败");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @RequestMapping(value = "/loginSms", method = RequestMethod.POST)
|
|
|
+ @ResponseBody
|
|
|
+ public Result loginBySms(@RequestParam("phone") String phone, @RequestParam("code") String code, @RequestParam("sessionId") String sessionId, HttpServletRequest request, HttpServletResponse response) {
|
|
|
+ Subject subject = SecurityUtils.getSubject();
|
|
|
+ PhoneCodeToken phoneCodeToken = new PhoneCodeToken(phone, code, sessionId);
|
|
|
+ try {
|
|
|
+ subject.login(phoneCodeToken);
|
|
|
+ } catch (AuthenticationException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return new Result(false, e.getMessage());
|
|
|
+ }
|
|
|
+ UserInfo user = (UserInfo) subject.getPrincipal();
|
|
|
+ identityService.setAuthenticatedUserId(user.getId().toString());
|
|
|
+ HttpSession session = request.getSession();
|
|
|
+ CookieUtil.addCookie(response, "JSESSIONID", session.getId(), 3 * 24 * 60 * 60);
|
|
|
+ return new Result(true, user);
|
|
|
+ }
|
|
|
+
|
|
|
@RequiresAuthentication
|
|
|
@RequestMapping(value = "/logout", method = RequestMethod.POST)
|
|
|
@ResponseBody
|
|
|
public Result logout() {
|
|
|
+
|
|
|
Subject subject = SecurityUtils.getSubject();
|
|
|
subject.logout();
|
|
|
+ identityService.setAuthenticatedUserId(null);
|
|
|
return new Result(true, "已退出登录");
|
|
|
}
|
|
|
|