2011-05-09 10 views
0

봄 보안 인증을 수행하기 전에 사용자 상세 정보를 확인하는 방법.스프링 보안에서 로그인하지 않고 사용자 정보를 확인하는 방법

로그인 중 내 프로젝트에서 기본 유효성 검사 사용자 이름/암호가 있는지, 사용자 이름의 유효성, 최대 재시도 제한 (해당 블록 a/c 이후의 5invalid 항목)을 확인하고 오류를 기준으로 오류를 표시해야합니다.

올바른 사용자 이름/암호가 사용자가 응용 프로그램에 처음 로그인 할 때 (db의 플래그에 따라) 여부를 확인해야합니다. [응용 프로그램에 액세스하려면 사용자가 고지 사항을 받아 들여야합니다] 면책 페이지를 표시해야합니다. > 제출 - -> 유효한 자격 증명

확인 -> 아니오 -> 디스플레이 오류 [업데이트 재시도 플래그] -> 예 -

여기

아이디/비밀번호 형태의 흐름이다 -> 유효 기간 확인 -> 초과 -> 표시 오류 -> 유효 기간 있음 -> 처음 확인 (및 면책 조항이 수락 됨) -> 면책 조항이 이미 승인 된 경우 표시하십시오. 응용 프로그램에 로그인하지 않고 면책 조항 페이지가 표시됩니다.

나는 사용자가 응용 프로그램에 로그인 버튼을 수락 동의합니다.

답변

0

스프링 보안 그 자체가 포함되지 않을 것이라고 생각합니다. 액션 클래스에서 DB를 검사하는 메소드를 호출하면됩니다. 사용자가 로그인 한 경우 사용자에게 적절한 페이지로 리디렉션되는 작업으로 돌아갑니다. 그렇지 않은 경우 면책 조항 페이지로 보내십시오.

고지 사항 페이지의 양식을 제출하면 수락 여부를 확인하십시오. 승인 된 경우 DB를 업데이트하고 해당 페이지로 리디렉션하십시오. 그렇지 않은 경우 오류를 표시하십시오.

스프링 보안을 올바르게 기억한다면, 수락 페이지와 로그인 페이지 등은 보안이 유지되지 않지만 다른 페이지는 안전하게 유지됩니다. 그래서, 제가 말했듯이, 나는 봄이 정말로 관련되어 있는지 확신하지 못합니다. DB와 라우팅에서 찾는 모든 작업을 수행하는 Struts 액션을 통해 올바르게 라우팅하는 것입니다.

+0

사용자 로그인을 위해 스프링 보안의 j_spring_security_check 액션을 사용합니다. – gnanz

+0

나는 생각했던 것과 조금 다릅니다. 그런 다음 인증을 허용 한 다음 면책 조항 수락을 받기위한 인터셉터 (http://cwiki.apache.org/WW/interceptors.html)를 작성합니다. 인터셉터를 구현하는 클래스를 작성하십시오. 예를 들어, 그들이 도청 방법에서 아직 수락하지 않은 경우, "disclaimer"를 반환하십시오. struts.xml은 섹션에 redirect 유형의 "disclaimer"결과가 있습니다. 적절한 기본값이 없으면 어느 URL로 향했는지 파악하여 허용하면 해당 URL로 리디렉션 할 수 있습니다. –

0

기본적으로 스프링 보안이이를 처리하지만 무시할 수 있습니다.

@Autowired 
private AuthenticationManager authenticationManager; 

@RequestMapping(value = "/login", method = RequestMethod.POST) 
public ResponseEntity<?> login(@RequestBody AuthenticationRequest authenticationRequest, Device device) throws AuthenticationException { 

    // Perform the security 
    final Authentication authentication = authenticationManager.authenticate(
      new UsernamePasswordAuthenticationToken(
        authenticationRequest.getUsername(), 
        authenticationRequest.getPassword() 
      ) 
    ); ... 
} 

AutheticationRequest이 방법이있는 AuthenticationException하지만 당신은 할 수 던졌습니다 마음에 내부 2 개 문자열 (사용자 이름, 암호)

베어와 단순한 객체입니다 이 내가 그것을 얼마나 단순한 예입니다 또한 try/catch에서 catch하고 로그인 실패시 일부 논리를 수행하십시오.

희망이 있습니다.

관련 문제