문제

웹 앱 요청에 토큰을 추가 할 수있는 메소드 또는 현재 API를 찾고 있습니다. 아마도 세션 내에서 지속되지는 않았을 수도 있습니다. 또는이 작업을 수행하는 효율적인 방법을 설명하여 나를 도울 수 있다면

예를 들어

1. get request => servlet은 토큰을 생성하고보기에 인쇄합니다.

2. 숨겨진 토큰으로보기를 반환합니다

<input type="hidden" name="token" value="UA37jdjs9UDJS3">
<input type="submit" name="deleteEmail" value="Delete">

3. Post Request => 양식이 제출되고 토큰이 동일한 지 확인합니다.

AJAX 요청이 있다면 여러 요청을 위해 다른 토큰이 살아남을 필요가 거의 없습니다.

사용자가 브라우저를 닫기로 결정하면 세션이 시간이 초과되면 토큰이 죽어야합니다.

사용자가 양식을 작성하지 못하면 사이트에서 다른 일을하기 위해 꺼져 있으면 해당 토큰이 사용되지 않으면 삭제해야합니다.

그러나 이와 같은 시스템을 구현하는 가장 좋은 방법은 무엇입니까?

Spring Security 3에 사용할 수있는 시스템이 있습니까?

Java, Grails, Spring MVC, Spring Security 3 및 Hibernate Area 내에서

도움이 되었습니까?

해결책

Grails 문서에서 "Synchronizer Token Pattern"을 살펴 보셨습니까? http://grails.org/doc/1.2.0/guide/single.html ?

다른 팁

HDIV 프로젝트를 살펴보십시오 http://www.hdiv.org/. 그들은 정확히 이것을합니다. HDIV 프로젝트의 코드를 사용하지 않더라도 정보는 직접 수행하는 방법을 제공 할 수 있습니다. CSRF 및 Double Subms Control과 같은 다른 용도에 대한 토큰 처리에 대해 배우는 것은 좋은 입문서였습니다.

첫 번째 생각은 이미 생성 된 세션 ID 만 사용할 수 있다는 것입니다. 하지만 당신이 상태를 포크하려고한다면 나는 다음과 같은 것을 사용하는 것이 좋습니다. 이음새 대화 모델

전화 할 때 웹 컨테이너가 생성되는 Session_id를 사용하지 않는 이유는 무엇입니까? request.getSession ()?

자신만의 "토큰"을 만들려면 쿠키를 확인하고 싶을 수도 있습니다. 쿠키는 웹 서버에서 웹 브라우저로 HTTP 헤더로 전송 된 키 값 쌍으로, 서버에 액세스 할 때마다 브라우저가 변경하지 않은 상태로 전송됩니다.

서블릿에서 쿠키를 만들려면 사용할 수 있습니다.

public void doGet ( HttpServletRequest request, HttpServletResponse response )
     throws ServletException, IOException {
  // Create a cookie
  Cookie c1 = new Cookie("yourdomain.token","the value");
  response.addCookie(c1);
 //build your response

}

쿠키는 다음 HTTP 요청에 자동으로 포함됩니다. 다시 읽을 수 있습니다.

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] cookies = request.getCookies();
//build your response
}

나는 최근에 이것에 대한 사용 사례를 만났다.

이전 응용 프로그램 창이 브라우저에 있고 다른 브라우저 창에서 로그인 링크를 클릭 한 경우 로그인 작업이 먼저 새 세션을 생성 한 다음 응용 프로그램 창으로 리디렉션했습니다. 이로 인해 이전 창의 OnOnload 메소드 메소드가 트리거되어 새 사용자를 로그 아웃하는 서버에 로그 아웃 요청이 발생했습니다.

로그 아웃을위한 JavaScript OnOnload 이벤트에 의존하는 것은 나에게 일종의 엉뚱한 것처럼 보이지만, 이것은 변경 될 수 없었기 때문에 우리는 OP가 제안한대로 수행하고 각 요청에 대해 확인하여 각 요청에 대해 확인했습니다. 이로 인해 OnUnload 로그 아웃 요청이 새 세션을 종료하는 것이 중지됩니다.

가장 좋은 방법에 관해서는, 나는 이것이 매우 간단하다고 말할 것입니다. 예를 들어 사용할 수 있습니다 http://java.sun.com/j2se/1.5.0/docs/api/java/util/uuid.html 고유 키를 생성합니다. Tapestry, JSF 또는 개찰구와 같은 구성 요소 기반 프레임 워크를 사용하는 경우이를 처리하는보다 높은 수준의 방법이있을 수 있습니다.

이것은 USECASE와 비슷합니까? 아니면 완전히 다른 것을 성취하려고합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top