请问,Java Web后台程序如何获得当前Web User Session的Windows用户名?

jamex 2018-01-09 03:48:46
请问,Java Web后台程序如何获得当前Web User Session的Windows用户名?

具体细节如下:
1. 我们公司有自己的Windows AD 域, 我们员工每天用公司的个人域用户名登录公司电脑的Windows,
2. 登录后,打开 IE浏览器, 访问我们自己用Java开发的一个内部网站页面, https://den-gendv-003/agentadmin/
3. 我的问题是,如何编程使得这个内部网站的页面能够显示出当前我已登录的Windows域用户名?

也就是说,我的Java Web 程序如何识别当前会话中已登录的Windows域用户?

开发运行环境如下:
Java + Tomcat + IE/Chrome + Windows Server 2012 + Windows 10

谢谢高手们!

另外,我以前开发ASP.NET + IIS的程序时,是用System.Web.UI.Page.User.Identity.Name 来得到上面的用户名。
using System.Web.UI;
if (Page.User.Identity.IsAuthenticated)
{
if (Session.IsNewSession || Session["CurrentUser"] == null)
RefreshCurrentUser(Page.User.Identity.Name);
。。。。

请问Java有没有类似的对象可用?
谢谢!


...全文
1112 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
你好sun悟空 2018-01-11
  • 打赏
  • 举报
回复
用js 可以直接获取到,然后再发送到后端即可 ,获取方式参照 :http://blog.csdn.net/kevinliuu/article/details/903737 亲测可以,但由于涉及到安全性问题,只能用ie浏览器.
那年花 2018-01-11
  • 打赏
  • 举报
回复
引用 10 楼 jamex 的回复:
[quote=引用 7 楼 qq_25543635 的回复:] [quote=引用 6 楼 qq_25543635 的回复:] 你可以不用搞那么麻烦 1. 我们公司有自己的Windows AD 域, 我们员工每天用公司的个人域用户名登录公司电脑的Windows,
也就是说 你可以同步你个人域的用户名 这样就可以知道谁登陆了[/quote] 能否解释一下 “你可以同步你个人域的用户名 这样就可以知道谁登陆了” 的具体做法?谢谢![/quote] 你公司员工登录的时候的用户名是唯一的啊 就判定这个用户名 就这个意思
东风玖哥 2018-01-11
  • 打赏
  • 举报
回复
你连这都不会呀?
jamex 2018-01-11
  • 打赏
  • 举报
回复
好像第一步,需要把Tomcat 配制成 接受 Windows认证方式。有谁做过的话,可以分享一下步骤吗? 谢谢!
jamex 2018-01-11
  • 打赏
  • 举报
回复
这些文章可以试试?有没有人试过? Tomcat/Java get logged in windows/domain user? https://www.experts-exchange.com/questions/24854979/Tomcat-Java-get-logged-in-windows-domain-user.html httpcontext in Java RESTful service https://stackoverflow.com/questions/42432836/httpcontext-in-java-restful-service Need currently logged in Windows user name in java https://stackoverflow.com/questions/31318378/need-currently-logged-in-windows-user-name-in-java
jamex 2018-01-11
  • 打赏
  • 举报
回复
引用 13 楼 dongfeng9ge 的回复:
你连这都不会呀?
请指教,谢谢!
什么都不能 2018-01-11
  • 打赏
  • 举报
回复
你要做办公电脑和你的系统做sso之前有公司这样做过,打开办公网portal可以免登录,然后再从portal到其他系统做sso,这个没有研究过,相比应该用到微软的方案
ZHOU西口 2018-01-10
  • 打赏
  • 举报
回复
1、简单的做法,初次登录成功后,在服务端存session,设置失效周期。如果LZ使用了jsp,那么jsp内置对象应该是支持的。 2、可以参考一下:https://www.cnblogs.com/sdgf/p/4909166.html
jamex 2018-01-10
  • 打赏
  • 举报
回复
引用 7 楼 qq_25543635 的回复:
[quote=引用 6 楼 qq_25543635 的回复:] 你可以不用搞那么麻烦 1. 我们公司有自己的Windows AD 域, 我们员工每天用公司的个人域用户名登录公司电脑的Windows,
也就是说 你可以同步你个人域的用户名 这样就可以知道谁登陆了[/quote] 能否解释一下 “你可以同步你个人域的用户名 这样就可以知道谁登陆了” 的具体做法?谢谢!
jamex 2018-01-10
  • 打赏
  • 举报
回复
引用 7 楼 qq_25543635 的回复:
[quote=引用 6 楼 qq_25543635 的回复:] 你可以不用搞那么麻烦 1. 我们公司有自己的Windows AD 域, 我们员工每天用公司的个人域用户名登录公司电脑的Windows,
也就是说 你可以同步你个人域的用户名 这样就可以知道谁登陆了[/quote]
引用 5 楼 splendid_java 的回复:
[quote=引用 4 楼 jamex 的回复:] [quote=引用 2 楼 splendid_java 的回复:] 好像有,第三方插件
可否告知是哪个第三方插件?谢谢!![/quote]

Map<String, String> map = System.getenv();
String userName = map.get("USERNAME");// 获取用户名
System.out.println(userName);
我的理解是获取系统登录名,但是看你上面描述应该是获取你公司域中的一个用户。 当然这两类用户有可能是统一的(用户名密码保持一致)。[/quote] 可能我没说清楚,我的Java Web程序在Tomcat服务器端,而我的目的是让服务器程序通过Web Page 的会话信息获取到客户端传来的Windows 用户名。 其实,我的最终目的是想做个SSO的免登陆验证,客户端用户不必再一次在Web页面上输入用户名和密码,凭借着他当前客户端的Windows登陆账号,直接通过Web服务端的验证。 请指教!
jamex 2018-01-10
  • 打赏
  • 举报
回复
引用 5 楼 splendid_java 的回复:
[quote=引用 4 楼 jamex 的回复:] [quote=引用 2 楼 splendid_java 的回复:] 好像有,第三方插件
可否告知是哪个第三方插件?谢谢!![/quote]

Map<String, String> map = System.getenv();
String userName = map.get("USERNAME");// 获取用户名
System.out.println(userName);
我的理解是获取系统登录名,但是看你上面描述应该是获取你公司域中的一个用户。 当然这两类用户有可能是统一的(用户名密码保持一致)。[/quote] 可能没说清楚,我的Java Web程序在服务器端,而我的目的是让服务器程序通过Web Page 的会话信息获取 客户端的Windows 用户名。 System.getenv(); 应该只能获得本机环境,也就是服务器的环境吧? 其实,我的最终目的是想做个SSO的免登陆验证,客户端用户不必再一次输入用户名和密码,凭借着他当前客户端的Windows登陆账号,直接通过Web服务端的验证。 请指教!
那年花 2018-01-10
  • 打赏
  • 举报
回复
引用 6 楼 qq_25543635 的回复:
你可以不用搞那么麻烦 1. 我们公司有自己的Windows AD 域, 我们员工每天用公司的个人域用户名登录公司电脑的Windows,
也就是说 你可以同步你个人域的用户名 这样就可以知道谁登陆了
那年花 2018-01-10
  • 打赏
  • 举报
回复
你可以不用搞那么麻烦 1. 我们公司有自己的Windows AD 域, 我们员工每天用公司的个人域用户名登录公司电脑的Windows,
ZHOU西口 2018-01-10
  • 打赏
  • 举报
回复
引用 4 楼 jamex 的回复:
[quote=引用 2 楼 splendid_java 的回复:] 好像有,第三方插件
可否告知是哪个第三方插件?谢谢!![/quote]

Map<String, String> map = System.getenv();
String userName = map.get("USERNAME");// 获取用户名
System.out.println(userName);
我的理解是获取系统登录名,但是看你上面描述应该是获取你公司域中的一个用户。 当然这两类用户有可能是统一的(用户名密码保持一致)。
jamex 2018-01-10
  • 打赏
  • 举报
回复
引用 2 楼 splendid_java 的回复:
好像有,第三方插件
可否告知是哪个第三方插件?谢谢!!
ZHOU西口 2018-01-09
  • 打赏
  • 举报
回复
好像有,第三方插件
jamex 2018-01-09
  • 打赏
  • 举报
回复
跪求高手出现!
​ 博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌项目名称基于Web的酒店客房管理系统的设计与实现系统说明3.2.1  用户模块功能分析前台模块应主要包括用户登录模块、用户注册模块、查看客房信息模块、客房预定 模块、用户留言模块、充值模块和个人信息维护模块。用户登录模块:用户通过输入注册的的账号和密码,然后进行身份验证,匹配成功 后实现登录功能。用户注册模块:用户输入合法的账号和密码可以实现注册功能。 查看客房信息模块:用户可以通过首页查看客房的价格,图片,详情等信息,从而   可以选择想要预定的房间。 客房预定模块:用户选择自己想要预定的客房后,可以通过输入相关信息进行订房操作。用户留言模块:用户可以向管理员发送留言。 充值模块:用户可以通过添加银行卡再为自己进行充值操作。 个人信息维护模块:用户可以修改自己的姓名、密码、身份证号等信息,还可以查看自己的订单。3.2.2  管理员模块功能分析对于管理员而言,一个好的管理系统总是能让酒店的管理工作事半功倍[7]。管理员 能够通过这个系统对自己的酒店情况一目了然,应该包括客户留言模块、客房管理模 块、订房信息管理模块、入住信息管理模块、统计分析模块、酒店新闻管理模块、会 员信息管理模块、员工信息管理模块、系统用户管理模块、个人信息维护模块。客户留言模块:管理员可以查看并回复用户的留言。客房管理模块:管理员可以管理客房信息,可以添加新的客房,删除已经停用的客房信息,还可以修改现有的客房信息。订房信息管理模块:管理员可以处理用户的订房请求,为用户办理入住手续。入住信息管理模块:对于没有注册的线下客户,也可以办理入住手续。统计分析模块:可以对酒店所有的入住信息进行记录和总结分析。酒店新闻管理模块:管理员可以更新网站上的新闻公告,展示图片等信息。会员信息管理模块:管理员可以查看到所有的注册会员信息,可以对会员信息进行删除,修改,添加操作。员工信息管理模块:管理员可以查看到自己公司所有的员工信息,而且还可以对员工的相关信息进行管理。系统用户管理模块:管理员可以查看到所有的系统管理员信息并对管理员信息进行管理。个人信息维护模块:管理员可以更改自己的登录密码或者是姓名、性别、手机号等 相关个人信息。​编辑 环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;6.是否Maven项目:否;技术栈1. 后端:Spring+SpringMVC+Mybatis2. 前端:JSP+CSS+JavaScript+jQuery使用说明1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;3. 将项目中springmvc-servlet.xml配置文件中的数据库配置改为自己的配置;4. 运行项目,在浏览器中输入http://localhost:8080/ 登录运行截图​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑 用户管理控制层:package com.houserss.controller;import javax.servlet.http.HttpSession;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import com.houserss.common.Const;import com.houserss.common.Const.Role;import com.houserss.common.ServerResponse;import com.houserss.pojo.User;import com.houserss.service.IUserService;import com.houserss.service.impl.UserServiceImpl;import com.houserss.util.MD5Util;import com.houserss.util.TimeUtils;import com.houserss.vo.DeleteHouseVo;import com.houserss.vo.PageInfoVo;/** * Created by admin */@Controller@RequestMapping(/user/)public class UserController if (ip != null && ip.length() > 0) String[] ips = ip.split(,);for (int i = 0; i  

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧