사용자가 passport.js로 로그인했는지 어떻게 알 수 있습니까?
passport.js
이틀 동안 정보와 샘플을 읽었 지만 그 이후로 모든 인증 프로세스를 수행했는지 확실하지 않습니다.
로그인 여부를 어떻게 알 수 있습니까? 예를 들어 로그인 또는 로그 아웃 버튼이있는 내비게이션 바가 있습니다. 아래 코드와 같은 변수가 있습니까?
if (login)
<button>logout</button>
else
<button>login</button>
사용자가 로그인 한 경우 passport.js
는의 모든 요청에 대해 user
객체를 생성 하여 미들웨어에 존재하는지 확인할 수 있습니다.req
express.js
if (req.user) {
// logged in
} else {
// not logged in
}
이를 위해 간단한 express.js
미들웨어를 생성하여 사용자가 로그인했는지 확인하고 그렇지 않은 경우 /login
페이지로 리디렉션합니다 .
function loggedIn(req, res, next) {
if (req.user) {
next();
} else {
res.redirect('/login');
}
}
그리고 그것을 사용하십시오 :
app.get('/orders', loggedIn, function(req, res, next) {
// req.user - will exist
// load user orders and render them
});
코드 샘플이 다음과 같은 미들웨어를 만들 수 있음을 나타내는 것처럼 템플릿에서 사용하려면 다음과 같이하십시오.
app.use(function (req, res, next) {
res.locals.login = req.isAuthenticated();
next();
});
여권을 설정 한 후 해당 코드를 어딘가에 넣으십시오.
그런 다음 템플릿에서 사용 (swig 예제)
{% if login %}
<button>logout</button>
{% else %}
<button>login</button>
{% endif %}
나는 그러한 해결책을 찾고 있었고이 페이지를 발견했습니다. 질문은 클라이언트 측에서 로그인 상태를 확인하는 방법입니다.
로그인 후 로그인 버튼을 숨기고 로그 아웃 버튼을 표시합니다. 페이지 새로 고침에서 로그 아웃 버튼 대신 로그인 버튼이 다시 표시됩니다. 유일한 해결책은 session을 사용하는 경우 sessionStorage에 항목을 저장하는 것입니다 (JWT를 사용하는 경우에는 localStorage). 로그 아웃 할 때이 항목을 삭제하십시오. 그런 다음 모든 페이지로드에서이 sessionStorage 항목을 확인하고 그에 따라 수행하십시오.
if (sessionStorage.getItem('status')) {
$("#btnlogout").show();
$("#btnlogin").hide();
// or what ever you want to do
} else {
$("#btnlogout").hide();
$("#btnlogin").show();
}
function Login() {
var data = {
username: $("#myModal #usr").val(),
password: $("#myModal #pw").val()
};
$.ajax({
type: 'POST',
url: '/login',
contentType: 'application/JSON; charset=utf-8',
data: JSON.stringify(data),
success: funcSuccess,
error: funcFail
});
function funcSuccess(res) {
sessionStorage.setItem('status', 'loggedIn');
$("#btnlogout").show();
$("#btnlogin").hide();
}
function funcFail() { $("#pp").text('Login Failed'); };
};
function Logout() {
$.ajax({
type: 'GET',
url: '/logout',
contentType: 'application/JSON; charset=utf-8',
success: funcSuccess,
error: funcFail,
});
function funcSuccess(res) {
$("#btnlogout").hide();
$("#btnlogin").show();
sessionStorage.removeItem("status");
};
function funcFail() { alert('Login method Failed'); };
};
app.get () 또는 router.get () 내에서 아래 코드를 사용하십시오.
router.get('/edit/:id', (req, res)=>{
if(req.isAuthenticated()){
if(req.isAuthenticated()){
//
}
else{
res.redirect('/users/login');//your particular login routes
}
});
참고 URL : https://stackoverflow.com/questions/18739725/how-to-know-if-user-is-logged-in-with-passport-js
'development' 카테고리의 다른 글
Linux의 디렉토리 아래 새로 생성 된 파일 및 하위 디렉토리에 대한 기본 권한을 설정 하시겠습니까? (0) | 2020.08.25 |
---|---|
"%. * s"는 printf에서 무엇을 의미합니까? (0) | 2020.08.25 |
반환 된 콘텐츠에 Content-Type : text / html 헤더가 있어도 Chrome 개발 도구에서 응답을 표시하지 못합니다. (0) | 2020.08.24 |
효율적인 순환 버퍼? (0) | 2020.08.24 |
VBA-for 루프 반복을 조건부로 건너 뛰는 방법 (0) | 2020.08.24 |