根据权限的管理员和超级管理员获取登入ip,上次的时间,登录次数,登录人的账号,名字
有一些系统要让用户知道登录的ip,上次登录的时间,总次数,登录的账户名称,又要根据权限来判定
package com.cec.controller;
import java.util.List;
import java.util.Set;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.shiro.SecurityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.cec.constants.Constants;
import com.cec.entity.rbac.SysResource;
import com.cec.entity.rbac.SysUser;
import com.cec.entity.rbac.User;
import com.cec.entity.vo.Hotel;
import com.cec.entity.vo.LoginIp;
import com.cec.entity.vo.Menu;
import com.cec.service.UserService;
import com.cec.service.bz.HotelService;
import com.cec.service.bz.LoginIpService;
import com.cec.service.rbac.sys.SysResourceService;
import com.cec.service.rbac.sys.SysUserService;
import com.cec.utils.CommonUtil;
import com.cec.utils.MenuUtils;
/**
* Home page
*
* Created by xcly on 2015-12-08.
*/
@Controller
public class HomeController {
@Autowired
private SysUserService adminuserService;
@Autowired
private UserService userService;
@Autowired
private SysResourceService resourceService;
@Autowired private HotelService hotelService;
@Autowired private SysUserService sysUserService;
@Autowired private LoginIpService loginIpService;
public static final String CURRENT_USER = "user_Login";
// public static String school_manage_model="";
// public static String admin_manage_model="";
// public static String chateacher_manage_model="";
//
// public static void initParam(String school_manage_model,String admin_manage_model, String chateacher_manage_model){
// HomeController.school_manage_model = school_manage_model;
// HomeController.admin_manage_model = admin_manage_model;
// HomeController.chateacher_manage_model = chateacher_manage_model;
// }//..
//
// @RequestMapping("/sct")
// public String sct(ServletRequest request, Model model){
// return "redirect:"+admin_manage_model+"/";
// }
Logger logger = LoggerFactory.getLogger(getClass());
@RequestMapping("/")
public String index2(ServletRequest request, Model model){
// System.out.println("userService="+adminuserService);
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
//Subject subjectuser = SecurityUtils.getSubject();
String username = (String) SecurityUtils.getSubject().getPrincipal();
logger.debug("---------------------------------"+username+"---------------------------------------");
User loginUser = null;
loginUser = userService.findByUsername(username);
String tips = null;
String logo = "";
if(loginUser==null){
return "redirect:/" ;
}
SysUser adminUser = null;
if(loginUser.getType() == Constants.USER_TYPE_ADMIN){
tips = "";
adminUser = adminuserService.findByUsername(username);
if(loginIpService.getLoginIp(username)!=null) {
String ip = req.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
LoginIp log=loginIpService.getLoginIp(username);
log.setAddress(ip);
log.setCount(log.getCount()+1);
log.setLoginuser(username);
log.setListtime(log.getTime());
String nowtime = CommonUtil.now();
log.setTime(nowtime);
loginIpService.addOrUpdate(log);
}else {
String ip = req.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = req.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
LoginIp log2=new LoginIp();
log2.setAddress(ip);
log2.setCount(log2.getCount()+1);
log2.setLoginuser(username);
String nowtime = CommonUtil.now();
log2.setTime(nowtime);
loginIpService.addOrUpdate(log2);
}
if(adminUser.getHotelId()!=0 ){
Hotel h = hotelService.getHotel(adminUser.getHotelId());
tips = h.getHotelName();
logo = h.getLogo();
}
// if(adminUser.getSysRole().getId() == Constants.SYSROLE_area_admin ){
// Hotel h = hotelService.getHotel(adminUser.getHotelId());
// tips = h.getHotelName();
// logo = h.getLogo();
// }
// if(adminUser==null){
// return "redirect:/" ;
// }
// else{
// return "redirect:/" ;
// }
}else{
}
if(username.equals("admin")){
logo = "assets/images/logo.png";
}
//管理员模块
session.setAttribute(CURRENT_USER,adminUser);
Set<String> permissions = adminuserService.findPermissions(adminUser.getUsername());
List<SysResource> resources = resourceService.findMenus(permissions);
List<Menu> menus = MenuUtils.convertToMenus(resources, true);
model.addAttribute("menus", menus);
model.addAttribute("title",tips);
model.addAttribute("userlogo",logo);
model.addAttribute("loginrole",adminUser.getSysRole().getRole());
model.addAttribute("loginrolename",adminUser.getSysRole().getDescription());
model.addAttribute("username", adminUser.getName()!=null ?adminUser.getName() :adminUser.getUsername() );
model.addAttribute("areacode",adminUser.getArea()==null?"":adminUser.getArea().getId());
return "index";
}//...
}
这样,咱们就能够根据不同的管理员获取ip,纪录上次时间,总次数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统