나는 Passport 인증 내 간단한 익스프레스 응용 프로그램에서 설정이 있고 그것을 잘 작동하고, 나는 이런 식으로 내 인덱스 페이지에 req.user를 표시 있습니다클라이언트 쪽 javascript에서 Passport의 req.user 변수에 어떻게 액세스합니까?
<% if (!isAuthenticated) { %>
<a id="signIn" href="/login">Sign In</a>
<% } else { %>
<h3 id="welcomeMsg"><%=user.id%></h3>
<h2 id="userBalance"><%=user.balance%></h2>
<a href="/logout">Log Out</a>
<% } %>
하는 index.js에서 :
app.get('/', function(req, res){
res.render('index', {
isAuthenticated: req.isAuthenticated(),
user: req.user
});
});
내가하고 싶은 일은 내 공개 디렉토리의 클라이언트 측 js 파일에 로그인 한 사용자의 사용자 이름을 확인하는 것입니다. 그 파일에서 그 변수를 사용 가능하게하는 가장 단순하고 가장 직접적인 방법은 무엇입니까?
app.get('/api/user_data', function(req, res) {
if (req.user === undefined) {
// The user is not logged in
res.json({});
} else {
res.json({
username: req.user
});
}
});
과 :
는
? 클라이언트 JS에 직접 노출해야합니다. 맞습니까? 이름이 지정된 object/module/etc에 넣으십시오. –
내 index.js의 객체에이 객체를 저장해야하며 클라이언트 측 js 파일에서 사용할 수 있다고 말하고 계십니까? 나는 여러 가지 일을 시도했지만 항상 정의되지 않은 것을 보여 주며 문제가없는 html로 ejs로 인쇄 할 수있는 이유를 정확히 이해하지 못합니다. – user3473543
아니요, 클라이언트와 서버가 서로 다른 프로세스라는 것을 의미하지는 않습니다. 클라이언트 측에서 액세스 할 JS를 렌더링해야한다. 개인적으로 나는 당신이 이미 알고있는 데이터를 얻기 위해 추가적인 http 호출을하는 것을 선호 할 것입니다. –