2014-12-24 3 views
2

안녕하세요, 저는 Nodejs를 처음 사용하고 프레임 워크를 표현합니다.Express에서 현재 Windows 사용자를 얻는 방법은 무엇입니까?

간단한 CRUD 응용 프로그램을 구현 중이며 사용자는 MS Windows에서 페이지를 방문 할 것으로 예상됩니다. 현재 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는 Windows 사용자 이름을 포함하지 않습니다. 더 자세한 정보는 Wikipedia을보십시오.

가능한 해결책은 NTLM 인증입니다. 그런 다음

npm install express-ntlm [--save] 

필요로하고 표현하는 미들웨어로 추가 : 그런 다음 옥에 UserName를 사용할 수 있습니다

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

이 설치하고 선택적으로 종속성으로 express-ntlm을 저장 추가하려면

을 경우
body 
    p welcome, #{ntlm.UserName}! 

당신은 실제 NTLM 인증을 수행하고, ACTI를 사용하여 자격 증명의 유효성을 검사하려면 ve 디렉토리에서도 다음을 수행 할 수 있습니다.

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

설명 주셔서 감사합니다, @ Fabio! – sqr

+0

===================== app.js =================== app.use ('/', routes); app.use (ntlm()); app.use ('/ search', 검색); ======================= 검색 =================== \t res.render ( \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 }); 안녕하세요 @ Fabio, 여기 라우팅과 혼동스러워합니다.이 경우에 http : // localhost : 3000/search에 대해 ntlm()을 실행하려면 무엇을 작성해야합니까? – sqr

+0

미들웨어는 정의 된 순서에 따라 실행됩니다. 그래서 당신의 설정에서 작동합니다. 'ntlm.UserName'이 렌더링 컨텍스트에서 사용 가능하기 때문에 명시 적으로'user'를 정의 할 필요가 없습니다 (my jade 예제 참조). –

관련 문제