Commit efe50b38 authored by xc's avatar xc

shiro限定并发登录人数

parent 9815f182
package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.utils.Md5Util;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.mapper.AccountMapper;
import cn.wisenergy.model.app.AccountInfo;
import cn.wisenergy.model.dto.AccountDto;
import cn.wisenergy.model.enums.LonginType;
import cn.wisenergy.model.vo.AccountLoginVo;
import cn.wisenergy.model.vo.UserInfoVo;
import cn.wisenergy.service.app.AccountSerivce;
import cn.wisenergy.service.shir.filter.KickoutSessionControlFilter;
import cn.wisenergy.service.util.UserToken;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.HashMap;
@Slf4j
@Service
public class AccountSerivceImpl implements AccountSerivce {
......@@ -32,6 +27,10 @@ public class AccountSerivceImpl implements AccountSerivce {
private AccountMapper accountMapper;
private static final String ADMIN_LOGIN_TYPE = LonginType.ADMIN.getDescription();
@Autowired
private KickoutSessionControlFilter kickoutSessionControlFilter;
@Override
public R<AccountDto> getAccountInfo(AccountLoginVo accountLoginVo) {
log.info("AccountSerivceImpl[].getAccountInfo[].input.param:accountLoginVo:"+accountLoginVo);
......@@ -68,6 +67,7 @@ public class AccountSerivceImpl implements AccountSerivce {
//返回数据
try {
subject.login(userToken);
kickoutSessionControlFilter.changeSession(1);
AccountDto accountDto = new AccountDto();
AccountInfo info=(AccountInfo)SecurityUtils.getSubject().getPrincipal();
accountDto.setId(info.getId());
......
......@@ -2,18 +2,19 @@ package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.utils.Md5Util;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.common.utils.StringUtil;
import cn.wisenergy.mapper.*;
import cn.wisenergy.model.app.*;
import cn.wisenergy.model.dto.StaffAddDto;
import cn.wisenergy.model.dto.UserCommitDto;
import cn.wisenergy.model.dto.UserDto;
import cn.wisenergy.model.dto.UserInfoDto;
import cn.wisenergy.model.enums.LonginType;
import cn.wisenergy.model.vo.*;
import cn.wisenergy.model.vo.StaffLoginVo;
import cn.wisenergy.model.vo.StaffVo;
import cn.wisenergy.model.vo.UserVipQueryVo;
import cn.wisenergy.service.app.StaffUserVipService;
import cn.wisenergy.service.common.UserVipManager;
import cn.wisenergy.service.common.VolunteerManager;
import cn.wisenergy.service.shir.filter.KickoutSessionControlFilter;
import cn.wisenergy.service.util.UserToken;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -25,7 +26,6 @@ import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -70,6 +70,10 @@ public class StaffUserVipServiceImpl extends ServiceImpl<LocalMapper, Local> imp
@Autowired
private LocalMapper localMapper;
@Autowired
private KickoutSessionControlFilter kickoutSessionControlFilter;
private static final int ERROR_CODE = 1;
//初始密码
......@@ -106,6 +110,7 @@ public class StaffUserVipServiceImpl extends ServiceImpl<LocalMapper, Local> imp
try {
subject.login(userToken);
kickoutSessionControlFilter.changeSession(3);
QueryWrapper<Staff> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("login_name",loginVo.getLoginName());
Staff staffInfo = staffMapper.selectOne(objectQueryWrapper);
......
......@@ -23,7 +23,6 @@ import cn.wisenergy.service.shir.filter.KickoutSessionControlFilter;
import cn.wisenergy.service.util.UserToken;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils;
......@@ -162,6 +161,7 @@ public class UserLoginServiceImpl extends ServiceImpl<UsersMapper, User> impleme
UserToken userToken = new UserToken(userVo.getPhone(), userVo.getCode(), CODE_LOGIN_TYPE);
try {
subject.login(userToken);
kickoutSessionControlFilter.changeSession(2);
//3、构造返回参数
UserInfoVo userInfoVo = new UserInfoVo();
userInfoVo.setUserId(user.getId());
......@@ -209,7 +209,7 @@ public class UserLoginServiceImpl extends ServiceImpl<UsersMapper, User> impleme
UserToken userToken = new UserToken(userVo.getPhone(), credentialsSalt, USER_LOGIN_TYPE);
try {
subject.login(userToken);
kickoutSessionControlFilter.changeSession(1);
kickoutSessionControlFilter.changeSession(2);
//3、构造返回参数
UserInfoVo userInfoVo = new UserInfoVo();
userInfoVo.setUserId(user.getId());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment