세션 기반 인증과 토큰 기반 인증을 사용할 수 있습니다. 성공적인 로그인 후에 세션 기반 인증을 사용할 때 스프링 보안 컨텍스트에서 세션이 제한된 시간에 생성되고 응답으로 JSESSIONID (기본 이름)라는 쿠키가 클라이언트에 반환됩니다. 예를 들어 :
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=301225C7AE7C74B0892887389996785D; Path=/auth/; HttpOnly
Content-Type: text/html;charset=ISO-8859-1
Content-Language: en-US
Content-Length: 90
Date: Tue, 1 Nov 2017 01:19:38 GMT
고객이 쿠키를 유지하기 위해 필요하고 각 요청은 로그인 한 사용자로 요청할 수하는 (세션이 만료 될 때까지) 요청이 쿠키 (JSESSIONID) 를 설정해야합니다. 클라이언트로서 당신은 테스트를 위해 우편 배달부를 사용할 수 있으며 Jersey 클라이언트 또는 HttpClient 중 하나를 사용하여 프로그래밍 방식으로 수행 할 수 있습니다. 이 link에서 우편 배달원과 보내는 쿠키를 확인할 수 있습니다.
또한 link에서 쿠키 도메인 작동 방식을 확인할 수 있습니다. 이 요청을 확인 은 인증 또는 우리가 사용할 수 있습니다뿐만 아니라 Principal
또는 아래 httpServletRequest
참조 : 당신이 /username1
엔드 포인트를 디버깅 할 경우
@RequestMapping(value = "/username", method = RequestMethod.POST)
@ResponseBody
public String loggedUserName(Principal principal) {
return principal.getName();
}
@RequestMapping(value = "/username1", method = RequestMethod.POST)
@ResponseBody
public String loggedUserName1(HttpServletRequest request) {
Principal principal = request.getUserPrincipal();
return principal.getName();
}
는 당신이 쿠키가 제대로 여부를 요청하도록 설정되어 볼 수있을 것입니다, 올바르게 설정하지 않을 경우 아마도 당신은 익명 사용자과 관련된 문제를 겪을 것입니다.
두 번째 방법으로 JWT (Json Web Token)을 사용하는 토큰 기반 인증을 사용할 수 있습니다. 그것은 응답의 tokens.example 이상 무국적 작동합니다
{
"token_type": "Bearer",
"expires_in": "3599",
"resource": "qwd636-27bso-joiue9-ee",
"access_token": "eyJ77hqggqDd3DctNDFjMS05MjE2LWNiYjEw"
}
그리고 모든에 대한
당신이 액세스를 사용하여 요청의 유효성을 확인하고 토큰을 새로 고칠 수 있습니다 요청합니다.
Boolean isValidToken = jwtTokenUtil.validateToken(token, principal.getUsername());
희망 하시겠습니까?
단순히 각 요청에 대한 자격 증명을 전달하지 않고 세션 ID를 사용하는 대신 [JWT] (https://jwt.io/)를 전달하십시오. 그렇게하면 상태를 유지할 수 있고 부하를 여러 서버에 분배하는 것이 간단합니다. –
모바일 애플리케이션이 30 개의 레코드 x 2 개의 테이블을 더 게시 할 수 있습니다. 각 게시물에 대해 사용자를 확인하면 성능에 영향을 미칩니다. – geezer57
그렇습니다. 그러나 JWT는 세션을 통해 많은 이점을 가져서는 안되며 많은 장점이 있습니다. –