사용자가 로그인했는지 확인하고 싶습니다. 대부분의 프로젝트에 사용자가 로그인했는지 확인하기 위해 통합 요격기를 통합했습니다. 하지만 이것은 AJAX 요청과 잘 작동하지 않고 인터셉터의 모든 컨트롤러와 일치하면/static/**을 포함한 모든 컨트롤러에 필터가 적용됩니다.이 경우에는 제외해야합니다 (.excludes (uri : "/ 정적/** ")). 이것이 올바른 올바른 표준 방법인가?사용자가 grails Spring Security에 로그인했는지 확인하는 가장 좋은 방법은 무엇입니까?
LoginInterceptor() {
matchAll()
.excludes(controller: "login")
.excludes(controller: "signUp")
.excludes(uri: "/static/**")
.excludes(uri: "/assets/**")
}
boolean before() {
if (!springSecurityService.isLoggedIn()) {
flash.message="You need to login to access furthur pages"
redirect(controller: 'login',action: 'auth');
return false
}
true
}
boolean after() { true }
void afterView() {
// no-op
}
위의 코드는 AJAX 요청과 함께 작동하지 않습니다. AJAX와 WEB 요청 모두에서 잘 작동하는 제네릭 인터셉터는 어떻게 만들 수 있습니까? 그리고 이것은 로그인 요청을 모니터링하는 표준 방법입니까?
'잘하지 못합니다'라는 말은 무엇을 의미합니까? 오류가 발생하거나 예기치 않은 결과가 나타납니다. 정확한 문제는 무엇일까요? – devbd
@devbd 우선 JSON에 대한 ajax 요청은 인터셉터가 인증 페이지로 어떻게 리다이렉트 할 것인가입니다. 둘째, matchAll()에 대한 인터셉터를 적용하면/static/**도 필터링되어 사용자가 로그인했는지 여부를 확인하기위한 적절한 해결책이 아닌 것 같습니다. –
JS 코드에서 Ajax 요청과 함께'redirect'를 처리해야합니다. 그런 다음 정확하게/static/**와 일치하는 URL이 있는지 확인하십시오.'/ static/**'과 같은 URL을 가지고 있다고 생각하지 않습니다. – devbd