Ho un progetto di ASP.Net MVC, e sto cercando di ottenere il nome utente di Windows client (il lato client è sempre in esecuzione sulla macchina Windows) e passare il nome utente di Windows al lato server utilizzando Node.JS. Come posso ottenere il nome utente corrente di windows usando node.js? Sto cercando di trovare qualcosa di simile a WindowsIdentity.GetCurrent(). Nome in C# per node.js o whoamI comando in CMD.Node.JS-Ottenere finestre attuali nome utente
risposta
per ottenere la corrente collegato username:
var path = require('path');
var userName = process.env['USERPROFILE'].split(path.sep)[2];
var loginId = path.join("domainName",userName);
console.log(loginId);
Anche se il nodo è il costruito in funzione del sistema operativo os
e os.hostname()
per restituire il nome host, è necessario accedere hostname del client in ASP.NET o nella lingua di vostra scelta. Non è possibile farlo nel nodo poiché è in esecuzione sul lato server e non ha nulla a che fare con le informazioni locali del client.
> require('os')
> os.hostname()
Guardate questa domanda
Determine Client's Computer Name
ottenere il nome del client di Host in ASP.NET AKA lato client
System.Net.Dns.GetHostEntry(Request.ServerVariables["REMOTE_HOST"]).HostName;
CUCCHIAIO FEED per i pigri
string IP = Request.UserHostName;
string compName = CompNameHelper.DetermineCompName(IP);
code from compnamehelper:
public static string DetermineCompName(string IP)
{
IPAddress myIP = IPAddress.Parse(IP);
IPHostEntry GetIPHost = Dns.GetHostEntry(myIP);
List<string> compName = GetIPHost.HostName.ToString().Split('.').ToList();
return compName.First();
}
Giù votati perché sembra che tu abbia superato quello che viene chiesto. Sta cercando di ottenere il nome utente degli utenti correnti. – Dawson
Giù votato rimosso. Immaginavo che avrebbe avuto i suoi clienti su un nodo ... Non capisco il caso d'uso che sta cercando. – Dawson
Grazie per la risposta, tuttavia Os.hostname restituisce il nome del computer, non l'ID utente in Active Directory. – Benjamin
Credo che si sta affermando che si dispone di un'applicazione Asp.NET, e vorrebbe utilizzare Node.js per determinare gli attuali utenti nome utente, e quindi inviare al vostro Asp. Applicazione NET.
non sviluppare su Windows se dal this question Credo che questo può essere memorizzato come una variabile di ambiente. process.env
è una mappa javascript/dict di variabili di ambiente e probabilmente contiene il nome utente degli utenti.
In alternativa è possibile analizzarlo dalla directory home dell'utente in quanto tale:
var path = require('path'); var username = path.sep(process.env['USERPROFILE'])[2];
La domanda ho linkato sopra implica che USERPROFILE
risolve a C:\Users\USERNAME\
. Quindi divido il percorso e prendo il terzo elemento, essendo il nome utente.
Ancora una volta, non ho una macchina Windows e non ha potuto confermare questo. Spero che questo ti spinga sulla strada giusta.
Cheers.
Capisco che questo non darà all'utente client di una web app come richiesto OP, ma questa domanda è molto alta nei risultati di ricerca per cercare per ottenere l'utente che ha effettuato l'accesso durante l'esecuzione locale di un'applicazione del nodo.
è possibile riprodurre il <domain>\<username>
uscita del whoamI
e WindowsIdentity.GetCurrent()
con le variabili di ambiente in Windows.
process.env.USERDOMAIN + '\\' + process.env.USERNAME
Se si vuole usare USERPROFILE
:
process.env.USERDOMAIN + '\\' + process.env.USERPROFILE.split('\\').pop()
Qualcuno ha creato un modulo chiamato username che fa tutto il lavoro duro per voi.
lo si utilizza come
var username = require('username');
console.log(username.sync());
Non era chiaro prima qui quando si utilizzano le finestre termine si stia riferendo al sistema operativo. – Dawson
Il nome utente corrente di Windows non è quello che si desidera (sarebbe l'utente che esegue il processo del server). Hai bisogno dell'autenticazione NTLM. – SLaks