2014-12-17 2 views
1

expressjs를 사용하여 웹 사이트를 만들려고합니다. 사용자가 로그인 한 경우 다른 페이지를 보내려고합니다.Nodejs Express : 로그인하면 다른 페이지 보내기

원시 HTML 웹 사이트를 보낼 수는 있지만 index.css와 같은 링크 된 파일은로드되지 않습니다!

app.use(cookieParser()); 
app.use(expressSession({secret:'somesecrettokenhere', resave: false, saveUninitialized: true})); 
app.use(bodyParser()); 

//app.use(express.static(path.join(__dirname, '../client/login'))); 
// disable layout 
var mainPage = express.static(path.join(__dirname, '../client/main')); 
var loginPage = express.static(path.join(__dirname, '../client/login')); 

app.get('/', function (req, res, next) { 
    console.log('getting /'); 
    if (req.session.userName) { 
     //app.use(express.static(path.join(__dirname, '../client/main'))); 
     console.log("logged in"); 
     mainPage(req, res, next); 
    }else { 
     //app.use(express.static(path.join(__dirname, '../client/login'))); 
     console.log("not logged in"); 
     loginPage(req, res, next); 
    } 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

미리 감사드립니다.

답변

1

예, 가능합니다. response.render(pageName);을 사용하여 사용자에게 보낼 페이지를 렌더링 할 수 있습니다.

app.use(cookieParser()); 
app.use(expressSession({secret:'somesecrettokenhere', resave: false, saveUninitialized: true})); 
app.use(bodyParser()); 

//app.use(express.static(path.join(__dirname, '../client/login'))); 
// disable layout 
// view engine setup 
app.set('views', path.join(__dirname, '../client')); 
app.set('view engine', 'jade'); 
app.get('/', function (req, res, next) { 
    console.log('getting /'); 
    if (req.session.userName) { 
     //app.use(express.static(path.join(__dirname, '../client/main'))); 
     console.log("logged in"); 
     res.render("mainPage"); 
    }else { 
     //app.use(express.static(path.join(__dirname, '../client/login'))); 
     console.log("not logged in"); 
     res.render("loginPage"); 
    } 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

나는, 당신이 사용할 수있는 옥 템플릿 엔진을 사용하는 다른

그것은 당신이 단지 사용자 이름에 대한 세션을 확인한다이 코드처럼 보이는
+0

도움 주셔서 감사합니다. 불행히도 여전히 작동하지 않고 오류가 발생합니다. 오류 : Function.Module._resolveFilename (module.js : 338 : 15)에서 ' 모듈을 찾을 수 없습니다. 렌더링 엔진, 원시 HTML을 (CSS와 js로) 렌더링하려고 할 때 그게 문제일까요? – yxyx136

0

- 내가보기 엔이 일을 상대로 권하고 싶습니다, 등 그것은 인증을하는 안전한 방법이 아닙니다.

안전한 방법으로 인증을 받으려면 passportjs 또는 stormpath과 같은 도구를 사용해야합니다. Stormpath는 일반 인증 자료 외에 여러 가지 물건 (api auth, social login 등)을 사용하지만 여권은 좀 더 베어 본 것입니다. 나는 Stormpath @ 작업 및 해당 라이브러리의 저자이다 -하지만 모두 같은 굉장 :

app.get('/', function(req, res) { 
    if (req.user) { 
    res.render('template'); 
    } else { 
    res.render('anonymousTemplate'); 
    } 
}); 

전체 공개 :

여기 당신이 원하는 것을 할 Stormpath를 사용하는 예입니다.

+1

맞아, 나는 데이터베이스 쿼리를 사용하여 자동 진단하고 있지만 나중에 추가 할 내용이다. 팁 주셔서 감사! – yxyx136