• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

로그인 후 다시 로그인화면으로 갑니다.

21.10.20 17:47 작성 조회수 319

1

로그인을 완료 한 상태로, "/"화면으로 이동 을합니다.

 

그후 다시 /login으로 가면, login화면으로 가버리는데, 

이건 어쩔수가 없는건가요??

답변 1

답변을 작성해보세요.

1

안녕하세요. 코딩왕님,

말씀하신대로 지금 설정대로라면 로그인을 한 뒤에도 /login 페이지에 접근할 수 있습니다. 아마도 로그인을 이미 한 사용자라면, login 페이지에 접근하지 못하게 하고 싶은것 같은데요.

우선은 왜 로그인 화면에서 접근할 수 있는지 알고 있어야겠죠? 해당 강의에서 만들었던 SecurityConfig를 보시면 알 수 있을 겁니다.

그렇다면 다음으로 찾아야 하는건, 어떻게 설정해야 /login은 인증하지 않은 사용자에게만 접근을 허용할 수 있는가? 즉 스프링 시큐리티를 설정하는 방법을 알아야 합니다.

두 질문에 모두 답을 드릴 수 있지만 직접 학습하며 알아낼 시간을 드리겠습니다. 공부를 해보신 뒤에 모르시겠으면 다시 댓글 남겨주세요. 그때 알려드리겠습니다.

좋은 질문 주셔서 감사합니다.

코딩왕님의 프로필

코딩왕

질문자

2021.10.26

안녕하세요 선생님 몇일동안 고민도 좀하고 선생님 코드 보면서 공부를 해서, 해결을 한것 같기는 한데, 이게 맞나 안맞나 잘 모르겠네요.

일단 코드먼저 복붙 해보겠습니다!

http.authorizeRequests()
.mvcMatchers("/login").not().fullyAuthenticated()
.mvcMatchers("/", "/sign-up", "/check-email-token",
"/email-login", "/login-by-email", "/search/study").permitAll()
.mvcMatchers(HttpMethod.GET, "/profile/*").permitAll()
.anyRequest().authenticated();

http.formLogin()
.loginPage("/login");
// .permitAll();

 

로그인 후 로그인 화면에 접속하면, error페이지로 이동을 하게끔 하였습니다.

 

근데 제가 원했던거는, 로그인 되어져있는 상태(인증완료) 이면 지정한 어떤 화면으로 보내는것을 하고 싶었거든요.

 

하지만 로그인 화면을 다시 안보니깐 이점은 만족을 하고 있습니다.

 

혹시 조언이나 도움 있으시면 부탁드려도 될까요?

 

감사합니다! 코딩왕 되겠습니다!

 

오오오.. 대박. 맞았습니다. 코딩왕님 정말로 코딩왕이 될 가능성이 보입니다!!! 제가 바라던거에요. 직접 학습해서 알아내는것!

그리고 최종적으로 원하시는.. 그것 (이미 인증된 사용자라면 첫 화면으로 보내는)까지 하시려면 조금 더 많이 커스터마이징을 해야 하는데 그건 좀 더 고민해 보셔야 되요. 구현 방법이 아니라 그 로직이 정말 필요한가에 대해서.. 인증 에러 발생했을 때 보여주는 화면에서 홈으로 가는 링크만 제공해 주면 되는거 아닐까 싶기도 합니다.

코딩왕님의 프로필

코딩왕

질문자

2021.10.26

감사합니다! 공부 열심히해서 샘 처럼 인정받는 엔지니어 되겠습니다!