2016-12-19 5 views
2

나는 Stormpath ID Site를 사용하는 express-stormpath 응용 프로그램을 가지고 있습니다. 이 구성은 다음과 같습니다.express-stormpath 및 stormpath-sdk-anglesjs를 사용하여 Stormpath ID 사이트에서 로그 아웃하는 방법은 무엇입니까?

app.use(stormpath.init(app, { 
    web: { 
    idSite: { 
     enabled: true, 
     uri: '/idSiteResult', 
     nextUri: '/' 
    }, 
    login: { 
     enabled: true, 
     uri: config.login 
    }, 
    logout: { 
     enabled: true, 
     uri: config.logout 
    }, 
    me: { 
     expand: { 
     customData: true, 
     groups: true 
     } 
    } 
    } 
})); 

로그인이 잘되지만 로그 아웃하면 문제가 발생합니다.

첫째, 그것은처럼 보이는, 내장 endSession stormpath-SDK-AngularJS와()

$auth.endSession(); 

하지만 여전히

. 로그인 명시-stormpath에 파고했다으로 로그 아웃 시도 logout POST requires Accept type text/html for id-site logout. stormpath-sdk-anglesjs에서는 endSession POST uses application/json처럼 보입니다.

그래서 나는 $ http.post

$http.post('/logout', null, { 
    headers: { 
    'Accept': 'text/html' 
    } 
}); 

과 로그 아웃을 시도하지만이 오류 얻을 : Stormpath ID 사이트에서

XMLHttpRequest cannot load https://api.stormpath.com/sso/logout?jwtRequest=[...] . Redirect from ' https://api.stormpath.com/sso/logout?jwtRequest=[...] ' to ' http://localhost:9000/idSiteResult?jwtResponse=[...] ' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:9000 ' is therefore not allowed access.

은 어떻게 로그인 할을?

답변

1

나는 Stormpath에서 일한다. ID 사이트를 사용하려면 실제로 최종 사용자를 ID 사이트로 리디렉션해야합니다. endSession()이 작동하지 않는 이유를 모르겠지만 Google JS 팀에 버그가 있는지 확인할 수 있습니다. 당신이 당신의 특급 서버에 csurf를 사용하는 경우

var form = document.createElement('form'); 
form.method = "POST"; 
form.action = "/logout"; 
form.submit(); 
+0

것은, 또한 전송해야합니다 : 한편

, 당신은 로그 아웃을 달성하기 위해이 코드 (또는 각도 별 기본 요소에 해당)를 사용할 수 있습니다 양식과 함께 XSRF-TOKEN (및 _csrf 쿠키가 아님). – ryan

0

이것은 CORS 문제인 것처럼 보입니다. 적어도 당신이 추가해야한다고 생각합니다.

Access-Control-Allow-Origin: https://api.stormpath.com 

서버의 응답 헤더에.