js如何得到当前登陆用户的详细信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js如何得到当前登陆用户的详细信息相关的知识,希望对你有一定的参考价值。

就是用户登陆后JS得到用户在数据库中的国籍的信息,也就是得到当前登陆用户的详细信息或者可以说得到用户的数据库信息

nodejs中的os模块中可以获取当前用户的home目录,获取操作系统的主机名,以及获取网络地址的网络接口。下面利用几个实例说明os模块获取这些信息,操作如下:

1、获取当前用户的home的目录路径,利用os.homedir();如下图所示:

2、获取操作系统的主机名称,利用os.hostname();如下图所示:

3、获取返回一个数组,包含平均负载,利用os.loadavg();如下图所示:

4、获取网络地址的网络接口,返回一个对象,利用os.networkInterfaces();如下图所示:

5、获取Node.js编译时的操作系统平台,利用os.platform();如下图所示:

6、获取指定操作系统的发行版,利用os.release();如下图所示:

参考技术A 一般项目中,用户的登陆信息储存在一个session中,判断登陆成功后,利用用户ID之类找到该用户所有信息,然后放在这个用户的对象之中:
User loginUser= userDao.getUser(id);//getUser(id)是通过id查找为传入id的用户的所有信息,并返回一个对象
request.getSession().setAttribute("user",loginUser);//把当前用户存入名为user的session中
jsp页面获得如下:
页面开头可以获得用户的某项信息,例如名字:
<%
String name=((User)session.getAttribute("user")).getName();
%>
然后js中得到这个name值:
</script>
var loginName="<%=name%>";
<script>
然后其他的值类似获得。
这是常用的方法,希望对你有用本回答被提问者采纳
参考技术B 这样获得的不是对象,而是tostring方法 参考技术C 最好的办法是使用ajax

如何在 C# 中获取当前用户的 Active Directory 详细信息

【中文标题】如何在 C# 中获取当前用户的 Active Directory 详细信息【英文标题】:How to get the current user's Active Directory details in C# 【发布时间】:2010-10-12 20:33:06 【问题描述】:

我正在开发一个使用 Windows 身份验证的 C# 和 ASP.Net 应用程序。

即在 Web.config 中:

<system.web>
    <authentication mode="Windows" />
</system.web>

我想从 Active Directory 中获取当前用户的详细信息(全名、电子邮件地址等)。


我可以通过使用获得他们在 Windows 2000 之前的用户登录名(例如:SOMEDOMAIN\someuser

string username = HttpContext.Current.Request.ServerVariables["AUTH_USER"];

我已经为用户制定了 LDAP 查询,使用他们当前的登录名(不是他们在 Windows 2000 之前的用户登录名):

DirectorySearcher adSearch = new DirectorySearcher(
        "(userprincipalname=someuser@somedomain.com.au)");
SearchResult adSearchResult = adSearch.FindOne();

但是,我不知道如何使用他们的预 W2K 登录名搜索 AD 以查找用户,或者以“someuser@somedomain.com.au”格式获取他们的登录名。

有什么想法吗?

【问题讨论】:

【参考方案1】:

Alan 已经给了你正确的答案 - 使用 sAMAccountName 过滤你的用户。

我会添加关于您使用 DirectorySearcher 的建议 - 如果您只需要一两条信息,请将它们添加到 DirectorySearcher"PropertiesToLoad" 集合中。

而不是检索整个大用户对象然后挑选一两个项目,这只会返回您需要的那些位。

示例:

adSearch.PropertiesToLoad.Add("sn");  // surname = last name
adSearch.PropertiesToLoad.Add("givenName");  // given (or first) name
adSearch.PropertiesToLoad.Add("mail");  // e-mail addresse
adSearch.PropertiesToLoad.Add("telephoneNumber");  // phone number

这些只是您需要指定的常用 AD/LDAP 属性名称。

【讨论】:

【参考方案2】:

“pre Windows 2000”名称,即DOMAIN\SomeBodySomebody 部分称为 sAMAccountName。

那就试试吧:

using(DirectoryEntry de = new DirectoryEntry("LDAP://MyDomainController"))

   using(DirectorySearcher adSearch = new DirectorySearcher(de))
   
     adSearch.Filter = "(sAMAccountName=someuser)";
     SearchResult adSearchResult = adSearch.FindOne();
   

someuser@somedomain.com.au 是 UserPrincipalName,但它不是必填字段。

【讨论】:

不,不是。 sAMAccountName 不包含“DOMAIN\”部分,因此对于林范围的查询毫无用处。 确实,缺少“DOMAIN\”是有问题的。 抱歉,注释与代码示例不符。是的,sAMAccountName 只是 DOMAIN\username 的“用户名”部分。 sAMAccountName 没有forrest 的概念,因为它是Windows2000 之前的概念。如果您需要搜索 W2k+ 域林,请使用 UPN username@DOMAIN【参考方案3】:

如果您使用的是 .NET 3.5 SP1+,更好的方法是查看

System.DirectoryServices.AccountManagement namespace.

它具有查找人员的方法,您几乎可以传递您想要的任何用户名格式,然后返回您需要的大部分基本信息。如果您在加载更复杂的对象和属性方面需要帮助,请查看 http://umanage.codeplex.com 的源代码,它得到了一切。

布伦特

【讨论】:

【参考方案4】:

添加对 COM“Active DS 类型库”的引用


            Int32 nameTypeNT4               = (int) ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_NT4;
            Int32 nameTypeDN                = (int) ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_1779;
            Int32 nameTypeUserPrincipalName = (int) ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_USER_PRINCIPAL_NAME;

            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();

            // Convert NT name DOMAIN\User into AD distinguished name 
            // "CN= User\\, Name,OU=IT,OU=All Users,DC=Company,DC=com"
            nameTranslate.Set(nameTypeNT4, ntUser);

            String distinguishedName = nameTranslate.Get(nameTypeDN);

            Console.WriteLine(distinguishedName);

            // Convert AD distinguished name "CN= User\\, Name,OU=IT,OU=All Users,DC=Company,DC=com" 
            // into NT name DOMAIN\User
            ntUser = String.Empty;
            nameTranslate.Set(nameTypeDN, distinguishedName);
            ntUser = nameTranslate.Get(nameTypeNT4);
            Console.WriteLine(ntUser);

            // Convert NT name DOMAIN\User into AD UserPrincipalName Name.User@Company.com
            nameTranslate.Set(nameTypeNT4, ntUser);
            String userPrincipalName = nameTranslate.Get(nameTypeUserPrincipalName);

            Console.WriteLine(userPrincipalName);

【讨论】:

使用NameTranslate获取DSN才是正道 您好,我尝试这样做,但是当我添加“Active DS 类型库”时,会出现一个黄色三角形,就像警告一样。我在windows 10,你知道发生了什么吗?谢谢

以上是关于js如何得到当前登陆用户的详细信息的主要内容,如果未能解决你的问题,请参考以下文章

PHP获得当前登录用户ID,详细代码写法

微信网页授权认证获取用户的详细信息,实现自动登陆-微信公众号开发干货

如何使用节点 js 、 react js 、 sql 中的会话以表格格式显示登录的用户详细信息?

如何在 C# 中获取当前用户的 Active Directory 详细信息

如何将 PHP 用户详细信息(会话)解析到 Node.js 服务器?

如何将用户当前用户详细信息插入Firebase中的另一个节点?