2012-12-25 2 views
1

Home, About, Terms of Service 등을 제외한 모든 페이지가 사용자가 로그인 한 경우에만 볼 수있는 Spring MVC 웹 애플리케이션에서 인증을 수행하는 가장 좋은 장소는 어디입니까? 필터 레벨, 컨트롤러 레벨 또는 둘 다?webapp에서 사용자 인증을 수행 할 위치는 어디입니까?

지금은 내 컨트롤러를 쓰고 있음을, 내가 좋아하는 코드를 많이 반복되어했기 때문에 나는이 부탁 해요 :

if (currentUser.isAuthenticated()) // and possibly currentUser.hasPermission("some") 
    // do logic and return proper page 
else 
    // return to home or login page 

것은이 아래에 인증이 필요한 모든 페이지를 넣어 더 좋을 것이다 일부 URL 패턴 및 필터 (사용자가 인증되지 않은 경우 캐치 및 리디렉션)를 필터로 보호 할 수 있습니까? 이렇게하면 컨트롤러가 더 깨끗해지며 요청 된 페이지 만 반환됩니다.

이 경우 적절한 디자인은 무엇입니까?

+0

일반적으로 말해서 인증이 높을수록 좋습니다. webapp이므로 web.xml 수준에서 "로그인/로그인하지 않음"을 주입 할 수 있습니까? 나는 스프링을 사용하지 않으므로,이 경우 어떻게 작동하는지 모르겠다. ... – fge

+0

나는 그것을 할 수 있다고 믿는다. (나는 어떻게되는지 모른다.) 그러나 나는 그것보다 더 프로그램적인 제어를 원한다. 요청을 기록하십시오. –

답변

1

요격기가 필요합니다. 몇 년 전에 인증 및 세션 처리와 관련하여 이와 비슷한 질문이있었습니다. [Spring MVC 3 Global Request Mapping]. 여기 어떻게 해결하고 그것을 [Github source for authentication session handling using interceptor] 구현입니다.

+0

요격기가 좋아 보이지만 나는 당신이 그랬던 것처럼 싫어합니다. 쿠키에 사용자의 비밀번호를 저장하고 싶지 않고 다른 반환 스타일, json, xml 또는 jsp를 가지고 있기 때문에 html을보기에 포함하고 싶지 않습니다. –

+0

암호는 쿠키에서 암호화되며, 이는 일반적으로 쿠키 인증을 처리하는 방법입니다. postHandler에서 내 HTML에 관해서는, 내가 글로벌 HTML을 처리하는 데 사용되는 방법이지만, 난 당신이 refractor 수 있으며, 더 잘 보이게 할 수 있다고 확신합니다. – Infinity

0

스프링 보안으로 스프링 응용 프로그램을 보호하는 것이 좋습니다. xml에 보안을 설정하면 응용 프로그램에 대한 서블릿 필터가 만들어집니다.

관련 문제