2014-12-24 5 views
2

Привет, я новичок в Nodejs и выражаю фреймворк.Как получить текущий пользователь Windows из Express?

Я реализую простое приложение CRUD, и пользователи ожидают посетить страницу из окон MS. Я хочу записать текущее имя пользователя Windows.

Я попытался зарегистрировать строку User-Agent на странице, и кажется, что User-Agent не содержит имя пользователя Windows. Это правда? и как правильно это реализовать?

res.render('search', {user: req.get('User-Agent')});  

Тогда в нефрите,

body 
    p welcome, #{user}! 

Вот что я получил:

Welcome, Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36! 
+1

Вам нужна аутентификация NTLM. – SLaks

+0

Спасибо, SLaks. требуется ли это только для проверки подлинности или требуется даже для чтения текущего имени пользователя входа? – sqr

+1

Все, что вам нужно, это [express-ntlm] (https://github.com/einfallstoll/express-ntlm). – Ravi

ответ

2

User-Agent не включает имя пользователя окна. Посмотрите на Wikipedia для получения дополнительной информации.

Возможное решение вашей проблемы может быть аутентификацией NTLM. Для того, чтобы добавить эту установку и при необходимости сохранить express-ntlm как зависимость:

npm install express-ntlm [--save] 

Затем требуется и добавить его в качестве промежуточного слоя, чтобы выразить:

var ntlm = require('express-ntlm'); 
app.use(ntlm()); 

Вы тогда сможете использовать UserName в нефрите:

body 
    p welcome, #{ntlm.UserName}! 

в случае, если вы хотите сделать реальную NTLM аутентификации и проверки учетных данных с помощью Acti Вы также можете сделать это:

app.use(ntlm({ 
    domain: 'MYDOMAIN', 
    domaincontroller: 'ldap://myad.example', 
})); 
+0

Спасибо за объяснение, @Fabio! – sqr

+0

===================== app.js ===================== app.use ('/', маршруты); app.use (ntlm()); app.use ('/ поиск, поиск); =================================================================================================================================================== 0 ('поиск', { \t \t \t \t \t \t \t \t \t \t \t \t \t пользователь: req.ntlm.UserName \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t}); \t \t \t \t \t \t \t \t }); Привет @Fabio, я думаю, что меня путают с маршрутизацией здесь.Что мне следует писать в этом случае, если я хочу, чтобы ntlm() запускался для http: // localhost: 3000/search – sqr

+0

Middlewares выполняются по заказу, который они определены. Поэтому в вашей настройке он должен работать. Не нужно явно определять 'user', поскольку' ntlm.UserName' доступно для контекста рендеринга (см. Пример моего нефрита). –

Смежные вопросы