Java 获取登陆的用户信息

Java 获取登陆的用户信息,第1张

存放在Map中,getCurrentUser()应该为getCurrentUser(ip)吧,否则,当前用户使用什么来标示是自己啊,至少有一个值来标示。getCurrentUser需要一个参数的。

java怎么获取本机的用户名或域可通过SystemgetEnv()得到。

Systemgetenv("USERNAME");Systemgetenv("USERDOMAIN");

它常和SystemgetProperties()配合使用,它们的区别是:

从概念上讲,系统属性 和环境变量 都是名称与值之间的映射。两种机制都能用来将用户定义的信息传递给 Java 进程。环境变量产生更多的全局效应,因为它们不仅对Java 子进程可见,而且对于定义它们的进程的所有子进程都是可见的。在不同的 *** 作系统上,它们的语义有细微的差别,比如,不区分大小写。因为这些原因,环境变量更可能有意料不到的副作用。最好在可能的地方使用系统属性。环境变量应该在需要全局效应的时候使用,或者在外部系统接口要求使用环境变量时使用(比如 PATH)。

Map<String, String> map = Systemgetenv();

String userName = mapget("USERNAME");// 获取用户名

String computerName = mapget("COMPUTERNAME");// 获取计算机名

String userDomain = mapget("USERDOMAIN");// 获取计算机域名

Systemoutprintln("自定义变量getenv CONF_LOCATION:" +Systemgetenv("conflocation"));

Systemoutprintln(" *** 作系统的名称:"+SystemgetProperty("osname"));

其它常用的属性参数如下:

javaversion Java 运行时环境版本 javavendor Java 运行时环境供应商 javavendorurl Java 供应商的 URL javahome Java 安装目录 javavmspecificationversion Java 虚拟机规范版本 javavmspecificationvendor Java 虚拟机规范供应商 javavmspecificationname Java 虚拟机规范名称 javavmversion Java 虚拟机实现版本 javavmvendor Java 虚拟机实现供应商 javavmname Java 虚拟机实现名称 javaspecificationversion Java 运行时环境规范版本 javaspecificationvendor Java 运行时环境规范供应商 javaspecificationname Java 运行时环境规范名称 javaclassversion Java 类格式版本号 javaclasspath Java 类路径 javalibrarypath 加载库时搜索的路径列表 javaiotmpdir 默认的临时文件路径 javacompiler 要使用的 JIT 编译器的名称 javaextdirs 一个或多个扩展目录的路径 osname *** 作系统的名称 osarch *** 作系统的架构 osversion *** 作系统的版本 fileseparator 文件分隔符(在 UNIX 系统中是“/” ) pathseparator 路径分隔符(在 UNIX 系统中是“:” ) lineseparator 行分隔符(在 UNIX 系统中是“/n” ) username 用户的账户名称 userhome 用户的主目录 userdir 用户的当前工作目录

首先你肯定有一个表单form用于传递你的账户,假设表单把请求传给LoginServlet,(action="loginServlet")且表单中假设你输出id的那一行是这样写的:

<input

type="text"

id="username"

name="username"

size

=

"20">。

那么当表单提交(点击submit)之后,在LoginServletjava中的doPost函数中,

String

id=

requestgetParameter("username");

便可以获取JSP中的账号。

PS:如果用户输入的正确的密码,建议将id存入Session会话中,sessionsetAttribute("username",

id);

这样在整个项目生命周期内,在任何时间都可以获取到用户的:

String

anyWhere=

(String)sessiongetAttribute("username")。

ip :

InetAddress addr = InetAddressgetLocalHost();

ip=addrgetHostAddress()toString;//获得本机IP

address=addrgetHostName()toString;//获得本机名称

登陆信息使用Cookie ,Cookie的使用可以使用jquery的 Cookie包 或者java手写生成

登陆时间:

Date now = new Date();

Calendar cal = CalendargetInstance();

DateFormat d1 = DateFormatgetDateInstance(); //默认语言(汉语)下的默认格 (MEDIUM风格,比如:2008-6-16 20:54:53)

这节将增加 CurrentUserjava,CurrentUserMethodArgumentResolverjava 两个文件,并且修改 WebMvcConfigurerjava,各文件所在包如下。

在 userApijava 中添加临时测试用的,测试完记得删掉。

不要忘了添加 @LoginRequired 这个注解( 上节添加的 ),要获取当前登录用户嘛,肯定得要求用户登录。重启项目访问 /api/user/test 测试下。

要想 @CurrentUser 起作用,需要编写一个配套解析器,做法是实现 spring 提供的 HandlerMethodArgumentResolver 接口。

新增 CurrentUserMethodArgumentResolverjava

User user = (User) webRequestgetAttribute("currentUser", RequestAttributesSCOPE_REQUEST) 这一句是从 request 作用域中取出名为 currentUser 的属性。 currentUser 是什么呢?在 上节编写的登录拦截器 中,最后有这么一句 requestsetAttribute("currentUser", user) ,所以 currentUse r 是 token 验证通过之后查询到的当前用户。

在 WebMvcConfigurerjava 中 Override addArgumentResolvers 方法

我是用 “张三” 这个用户登录获取的 token ,正确地返回了张三的信息。

项目地址: >

以上就是关于Java 获取登陆的用户信息全部的内容,包括:Java 获取登陆的用户信息、java怎么获取本机的用户名或域、在jsp页面中如何获取到当前登录用户的角色id等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9534607.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存