워크 플로를 제대로 이해하지 못하는 것 같습니다. 아파치 시로 (Apache Shiro)와 스톰 패스 (Stormpath)를 사용하여 스칼라에 웹 서비스를 작성하고 있습니다. 내 사용자 인증 프로세스는 다음과 같습니다Sciro + Akka + Spray 환경에서 Shiro 작품을 만들 수있는 방법
1), POST 요청에서 사용자 데이터를 가져 Stormpath 그것을 확인하고 모든 일부 페이지에 대한 좋은 리디렉션 경우 : 로그에서
pathPrefix("api") {
path("login") {
post {
AuthToken.fromRequest { (token: AuthToken) =>
stormpathAuth(token) { subj =>
log.info("Subj {}", subj.getPrincipal.toString)
redirect("/some/page", StatusCodes.Found)
}
}
}
}
가 좋아, 시로 반환 Stormpath 계정이있는 정확한 제목. 다음으로 코드에서 사용하는, 제목을 추출 할 :
pathPrefix("some") {
loggedInUser { subject =>
path("page") {
get {
complete {
html.render(Page.model)
}
}
} ..... other routes
loggedInUser
지침이 될 추출이 로그인 폼으로 리디렉션 기타의 방법으로 인증 않다면 확인해야합니다. 문제는 로그에서 항상 올바른 계정을 표시하지만 로그인 양식으로 리디렉션된다는 것입니다.
업데이트
사실 스프레이는 Akka 위에 구축입니다. 그래서 문제는 getSubject
구현 뒤에 있으며 현재 ThreadLocal 환경에 의존한다고 생각합니다. Shiro + Akka 주제를 검색했지만 유용한 정보를 찾지 못했습니다.
[Shiro Stormpath plugin] (https://github.com/stormpath/stormpath-shiro/wiki)을 사용하고 있습니까? –
또한 Servlet 컨테이너 또는 W/Play에서 실행 중입니까? ? –
@LesHazlewood 예 사용자 인증을 위해 Stormpath 플러그인을 사용하고 있습니다. 아니요, [스프레이 툴킷] (http://spray.io/), 스프레이 캔 및 스프레이 라우팅으로 내 서버 및 클라이언트 측을 빌드했습니다. – 4lex1v