写道
/**
*用户登录注入信息
*
/
// 往 Session 中注入 userID 信息
Map<String, Object> session = ActionContext.getContext().getSession();
session.put("userInfo.userID", userInfo.getUserID());
session.put("userInfo.username", userInfo.getUsername());
session.put("username", userInfo.getUsername());
// 更新登录 IP 地址和登录时间
userInfo.setLoginIP(getIpAddr());
userInfo.setLastLoginTime(new Date(System.currentTimeMillis()));
userInfoService.updateLoginIpAndTime(userInfo);
// 获取客户端真实的 IP 地址
private String getIpAddr() {
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
String clientIp = request.getHeader("x-forwarded-for");
if(clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
clientIp = request.getHeader("Proxy-Client-IP");
}
if(clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
clientIp = request.getHeader("WL-Proxy-Client-IP");
}
if(clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) {
clientIp = request.getRemoteAddr();
}
return clientIp;
}
/**
*获取用户登录信息
*
/
// 从 Session 中获得用户 ID
private Long getUserIDfromSession() {
Map<?,?> session = ActionContext.getContext().getSession();
return (Long) session.get("userInfo.userID");
}
// public String insertShop(){
Long userid = this.getUserIDfromSession();
shop.setUserID(userid);
shop.setCreateTime(new java.util.Date());
Long id = shopService.insertShop(shop);
if (id!=null) {
return SUCCESS;
}else{
this.addFieldError("shop.errortext", "添加失败");
return ERROR;
}
}
分享到:
相关推荐
跨服务器session应用详解,相信对于很多企业有重要的参考价值
Session又称为会话状态,是Web系统中最常用的状态,用于维护和...举个例子来说,我们可以把已登录用户的用户名放在Session中,这样就能通过判断Session中的某个Key来判断用户是否登录,如果登录的话用户名又是多少。
javaweb cookie session
报表集成到项目中可能会有一个疑问就是系统应用和报表应用在一个web服务器下,那系统session和报表session是不是一个session呢?如果不是那会不会有冲突呢?
js中session的应用,在javascript中应用session,对页面前台全局变量有很好的应用
Session2电子商务应用方案.pptx
session 的应用对于处学ASP.NET的用户很有帮助.
asp.net 应用程序,通过web.config 应用程序发布到IIS上,实现不同应用程序之间session 共享
asp.net session的应用
session facade:基于在线式银行的应用 session facade 远程调用 EJB
通过spring-session 和redis 达到跨域同应用时 session 统一存储。在应用中实现单点登录操作
实力分析php session的登录验证
Nginx,Mamcache负载均衡,session共享应用 Nginx,Mamcache负载均衡,session共享应用 Nginx,Mamcache负载均衡,session共享应用 Nginx,Mamcache负载均衡,session共享应用
详细描述了session的原理及作用,session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。
asp.net简单会话(session)应用,可以对会话机制有个大概的了解
javascriptSession用户session共享页面数据,适合于单页面应用程序开发
关于PHP的session的基本使用 认识session的工作原理 1启动session 2读写session的变量 3删除session变量 4session在用户登录中的应用
比较详细介绍了sesion为何物,和cookies的区别以及介绍了基本的使用方法,对于初学者弄清楚session有一定的帮助。
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等。下面分别介绍它们的用法和区别。 方法 信息量大小 作用域和保存时间 应用范围 保存位置
如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,需要重新登录A才可以访问。经过资料查找,发现问题是因为:IP相同认为是同一个域,接收了B...