2017-04-22 1 views
1

을 표현하고 나는 기본 인증 설정에 노력하고 있습니다. 그것은 비 정적 경로에 대해 잘 작동하지만 정적 경로가 작동하는 방식을 이해하는 데 문제가 있습니다. 나는 최근에 내 인증 페이지 (/ 홈) 정적 경로를 사용을 요청할 때 .../home.html을, 그것은 상관없이 경로를 제공하지 않습니다 것을 발견했다. 이미 IsAuthenticated는이 호출 그래서, 그 인증이 실패 로그 콘솔에서 볼 수 있지만, 그러나 그것은 작동하지 않습니다, 그것을 내가/홈 인증 같은 방법으로 인증을 시도했다.인증 정적 경로, nodejs는 웹 개발에 나는 비교적 새로운 오전 여권 HTML

사람이 올바른 방향으로 날 지점 수 있을지는 적절한 인증을하기 위해 묻는/가정 및 /home.html의 차이를 이해하려고 나는이 크게 감사하겠습니다. 나는 또한 그들을 통해 탐색 할 때 온라인으로 방문 대부분의 웹 사이트는 정적 경로가없는 것으로 나타났습니다. 유일한 방법 때문에 나는 또한 첫 번째 단추를 클릭 한 후 정적 경로를 제공, 버튼 HREF =/path.html를 사용하는 것입니다에서 페이지를 리디렉션하는 방법을 알고있다. 정적이 아닌 경로 (href =/path가 끝에 .html을 추가하지 않으면 작동하지 않음)를 제공하는 방법을 알고 있으면 좋을 것입니다.

아마도 대답은 오히려 간단하지만 아마 어떤 단어인지는 알지 못합니다. 내 최선의 지식을 찾아야 만 stackoverflow에서 찾을 수 없습니다. 그래서이 멍청한 질문을 도와주세요. 내가 인증을 시도 할 경우

다음
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(cookieParser()); 
app.use(express.static('public')); 
app.set('views', __dirname + '/public'); 
app.engine('html', engines.mustache); 
app.set('view engine', 'html'); 

app.use(require('express-session')({ 
    secret: 'so secret much safety', 
    resave: true, 
    saveUninitialized: true 
})); 
app.use(passport.initialize()); 
app.use(passport.session()); 

은 다음과 같습니다 : 나는 미들웨어를 설정할 경우 다음

은 내가 nodejs 그들을 찾을 수 없습니다 공용 폴더에서 멀리보기를 이동하려고

function isAuthenticated(request, response, next) { 
    console.log('isauthenticated:'+request.isAuthenticated()); 
    if (request.isAuthenticated()){return next();} 
    else{response.redirect('/');} 
} 


app.use('/home', isAuthenticated, function(request, response){ 
    response.render('home.html'); 
    //response.send('if you are viewing this page it means you are logged in'); 
}); 

app.use(express.static(__dirname + '/home'), isAuthenticated, function(request, response){ 
    //should serve the page here 
}); 
+0

공개 폴더에 자신의 의견이 있으므로 아무 것도 상관없이 * 액세스 할 수 있습니다. 공개 폴더 외부로보기를 이동하면 /home.html과 같은 링크를 사용하여 더 이상 액세스 할 수 없습니다. 빠른 작업 방법에 대한 기본 자습서를 읽으시기 바랍니다. – Molda

답변

0

비록 내가보기 디렉토리를 변경했지만. 그런 다음 앱에서 라우터로 변경하면 문제가 완전히 해결 된 것입니다. 이것은 아마 아주 사소한 것이었지만 내 길을 찾아 내기까지 어느 정도 시간이 걸렸습니다. 다른 아마추어가 동일한 문제를 가지고 여기에서 끝나면 다음과 같이 작동합니다 :

var router  = express.Router(); 
... 
app.set('views', __dirname + '/views'); 
... 
router.use('/home', isAuthenticated, function(request, response){ 
    response.render('home'); 
}); 

router.use(express.static(__dirname + '/home'), isAuthenticated, function(request, response){ 
    console.log('it works'); 
}); 
관련 문제