2015-01-12 6 views
7

मेरे पास एएसपी.NET एमवीसी प्रोजेक्ट है, और मैं क्लाइंट विंडोज उपयोगकर्ता नाम प्राप्त करने की कोशिश कर रहा हूं (क्लाइंट साइड हमेशा विंडोज मशीन पर चल रहा है) और विंडोज़ उपयोगकर्ता नाम को सर्वर की ओर से पास करें नोड.जेएस का उपयोग करना मैं node.js का उपयोग कर वर्तमान विंडोज उपयोगकर्ता नाम कैसे प्राप्त कर सकता हूं? मैं WindowsIdentity.GetCurrent() के समान कुछ खोजने की कोशिश कर रहा हूं। Code में node.js के लिए नाम, या सीएमडी में whoamI कमांड।नोड.जेएस-वर्तमान विंडोज उपयोगकर्ता नाम प्राप्त करना

+0

यह पहली बार स्पष्ट यहाँ जब तुम अवधि विंडोज़ ऑपरेटिंग सिस्टम की बात कर रहे थे प्रयोग कर रहे हैं नहीं था में उपयोग करें। – Dawson

+0

वर्तमान विंडोज उपयोगकर्ता नाम वह नहीं है जो आप चाहते हैं (वह सर्वर सर्वर प्रक्रिया चलाएगा)। आपको एनटीएलएम प्रमाणीकरण की आवश्यकता है। – SLaks

उत्तर

13

प्राप्त करने के लिए वर्तमान में लॉग-इन उपयोगकर्ता नाम:

var path = require('path'); 
var userName = process.env['USERPROFILE'].split(path.sep)[2]; 
var loginId = path.join("domainName",userName); 
console.log(loginId); 
+3

ने लिनक्स के तहत मेरे लिए काम नहीं किया है, लेकिन मैं '' process.env.USER'' –

+0

के तहत उपयोगकर्ता को Win7 – dude

+1

के तहत "डोमेन नाम" प्राप्त कर सकता हूं, मैं process.env.USERDOMAIN प्रक्रिया से प्राप्त करने में सक्षम था। env.USERNAME – afreeland

4

हालांकि नोड ने ऑपरेटिंग सिस्टम फ़ंक्शन os और os.hostname() होस्ट होस्ट को वापस करने के लिए बनाया है, तो आपको ASP.NET में क्लाइंट के होस्टनाम या अपनी पसंद की भाषा तक पहुंचने की आवश्यकता होगी। आप इसे नोड में नहीं कर सकते क्योंकि यह सर्वर की तरफ चल रहा है और क्लाइंट की स्थानीय जानकारी के साथ कुछ लेना देना नहीं है। इस सवाल ASP.NET उर्फ ​​ग्राहक के पक्ष आलसी के लिए

System.Net.Dns.GetHostEntry(Request.ServerVariables["REMOTE_HOST"]).HostName;

चम्मच फ़ीड में

Determine Client's Computer Name

प्राप्त ग्राहक होस्ट नाम पर

> require('os') 
> os.hostname() 

देखो

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(); 
    } 

MICROSOFT DOCUMENTATION

+1

नीचे मतदान किया गया क्योंकि आपने देखा है कि क्या पूछा जा रहा है। वह वर्तमान उपयोगकर्ता नाम प्राप्त करने के लिए देख रहा है। – Dawson

+0

नीचे वोट हटा दिया गया। मुझे लगता है कि वह अपने ग्राहकों को नोड चलाएगा ... मुझे लगता है कि वह जिस मामले के लिए जा रहा है उसे समझ में नहीं आता है। – Dawson

+0

उत्तर के लिए धन्यवाद, हालांकि Os.hostname कंप्यूटर का नाम देता है, सक्रिय निर्देशिका में उपयोगकर्ता आईडी नहीं। – Benjamin

1

मेरा मानना ​​है कि आप स्पष्ट करते हैं कि आप एक Asp.NET आवेदन है, और Node.js उपयोग करने के लिए निर्धारित करने के लिए मौजूदा उपयोगकर्ताओं उपयोगकर्ता नाम, और फिर अपने Asp में जमा करें चाहते हैं। नेट आवेदन।

मैं विंडोज़ पर विकसित नहीं हूं हालांकि this question से मेरा मानना ​​है कि इसे पर्यावरण चर के रूप में संग्रहीत किया जा सकता है। process.env पर्यावरण चर के जावास्क्रिप्ट मानचित्र/dict है और संभवतः उपयोगकर्ता नाम उपयोगकर्ता शामिल हैं।

वैकल्पिक रूप से आप के रूप में उपयोगकर्ताओं घर निर्देशिका से पार्स कर सकते हैं:

var path = require('path'); var username = path.sep(process.env['USERPROFILE'])[2];

सवाल मैं ऊपर लिंक का तात्पर्य है कि USERPROFILEC:\Users\USERNAME\ को हल करता है। मैं फिर पथ को विभाजित करता हूं और उपयोगकर्ता नाम होने के नाते तीसरा तत्व लेता हूं।

फिर से, मेरे पास विंडोज़ मशीन नहीं है और इसकी पुष्टि नहीं हो सका। उम्मीद है कि यह आपको सही रास्ते के नीचे सेट करता है।

चीयर्स।

7

मैं समझता हूँ कि यह एक वेब एप्लिकेशन की क्लाइंट उपयोगकर्ता के रूप में ओपी पूछा नहीं देंगे, लेकिन इस सवाल की कोशिश कर के लिए खोज परिणामों में बहुत अधिक है स्थानीय रूप से नोड एप्लिकेशन चलाते समय लॉग इन उपयोगकर्ता को प्राप्त करने के लिए।

आप Windows में वातावरण चर के साथ whoamI और WindowsIdentity.GetCurrent() की <domain>\<username> उत्पादन पुन: पेश कर सकते हैं।

process.env.USERDOMAIN + '\\' + process.env.USERNAME

आप बल्कि USERPROFILE का उपयोग हैं, तो:

process.env.USERDOMAIN + '\\' + process.env.USERPROFILE.split('\\').pop()

2

किसी एक मॉड्यूल है कि कड़ी मेहनत के सभी करता है आप के लिए username बुलाया बनाया गया है।

आप की तरह

var username = require('username'); 

console.log(username.sync()); 
+0

वैकल्पिक रूप से, आप child_process मॉड्यूल का उपयोग करके node.js में "WHOAMI" सीएमडी कमांड चला सकते हैं। मैंने नीचे अपना समाधान प्रदान किया है। – Benjamin

+0

यह भविष्य के सबूत या किसी और के मॉड्यूल का उपयोग करने के रूप में सरल नहीं लगता है। – Jared

संबंधित मुद्दे

 संबंधित मुद्दे