저는 이미 SPA 및 보안 측면의 두 가지 프로젝트에 참여했습니다. 마지막으로 GWT + Spring Security가있었습니다. Angular과 Spring Security를 함께 성공적으로 사용할 수 있다고 확신합니다.
Spring Security AFAIK에는 '우리는 SPA 모드입니다'라는 기본 제공 구성 매개 변수가 없습니다. 따라서 Spring Security 측의 일부 조정/conf가 필요합니다. 예 : 로그인하는 동안 스프링 보안 로그인 컨트롤러가 내장되어 있다고 상상해보십시오. 성공적인 인증의 경우 기본적으로 사용자는 실패한 경우 해당 오류 페이지로 리디렉션되는 색인 페이지로 리디렉션됩니다. SPA 웹 응용 프로그램에별로 도움이되지 않는 표준 웹 응용 프로그램의 정상적인 동작입니다. SPA의 경우 AJAX 호출을 감지하고 성공적인 사례의 경우 사용자 이름/역할로 JSON을 인쇄하거나 실패에 대한 401 코드를 전송해야합니다 (JS에서 401을 감지하고 해당 오류를 표시). Spring Security의 해당 확장 포인트 (AuthenticationSuccessHandler
및 AuthenticationFailureHandler
)를 사용할 수 있습니다.
다른 조정할 점 : 세션 만료 후 기본적으로 사용자는 로그인 페이지로 리디렉션되고 SPA 앱은 다음 AJAX 호출에 대한 응답으로 로그인 페이지를 수신합니다.
내 개인적인 exprience 일반 가이드로 보는 것은 그렇게 될 것입니다 : JS 로의 역할로드 목록로드 후. UI 측에서 해당 구성 요소를 표시/숨기기 위해 사용하십시오. 서버 쪽에서 같은 제한 목록을 적용하십시오 (). 사용자가 브라우저에서 JS를 편집하지 않도록하려면 (중간 크기의 일부 JS 응용 프로그램은 매우 복잡한 작업 임) AJAX는
일부 Java 메소드를 고정 전화의
- 보안 URL : 서버에 당신 사이를 선택해야합니다.
나는 둘째를 선호합니다 (서비스의 보안 비즈니스 방법). 정상적으로 우리는 안전한 비즈니스 운영을 원하기 때문에 좀 더 편리하다고 생각합니다. adwantage로서 당신은 다른 프로토콜을 통해 당신의 비즈니스 로직을 노출시킬 수있을 것이고, 보안은 이미있을 것입니다. 다른 쪽에서는 여러 비즈니스 요구 사항이 다른 엔드 포인트/프로토콜에 대해 다른 권한을 가지고 있다고 생각할 수 있습니다. 그래서 그것은 당신의 실제 상황에 더 의존합니다.
레이지 크기 JS 애플리케이션은 모듈로 분할되어야합니다. 직접적인 의존성을 줄이려면 모듈간에 cummunicate하기 위해 직접 호출 된 이벤트를 사용하는 것이 좋습니다. 이 코드에서 보안을 수행하는 방법에 대한 Addy Osmany의 흥미로운 생각이 있습니다. 좋은 링크를 찾지 못했습니다. this 또는 this이 도움이 될 것입니다 ("허가"검색).
언제든지 질문을 올리십시오. 행운을 빕니다.