Commit efe50b38 authored by xc's avatar xc

shiro限定并发登录人数

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