[SPRING] Spring 보안에서 'anonymousUser'가 인증되는 이유는 무엇입니까?
SPRINGSpring 보안에서 'anonymousUser'가 인증되는 이유는 무엇입니까?
이것은 내 메인 컨트롤러입니다.
package org.demian.demibox.controllers;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class MainController {
private String getUsername() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth.isAuthenticated())
return auth.getName();
else
return null;
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String showHome() {
String username = getUsername();
System.out.println(username);
if (username == null || username.length() == 0)
return "welcome";
return "index";
}
}
로그인하지 않은 경우에도 auth.isAuthenticated ()는 항상 true를 반환합니다. 왜 그런가요? auth.isAuthenticated ()가 false를 반환하는시기는 언제입니까? 로그인하지 않은 경우 인증 된 사용자의 이름은 anonymousUser이고 로그인되어있는 경우 사용자 이름입니다.
이것은 내 security-context.xml 파일입니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<security:authentication-manager>
<security:authentication-provider>
<security:jdbc-user-service data-source-ref="dataSource" id="jdbcUserService" />
<!-- <security:password-encoder ref="passwordEncoder" /> -->
</security:authentication-provider>
</security:authentication-manager>
<security:http use-expressions="true">
<security:intercept-url pattern="/" access="permitAll" />
<security:intercept-url pattern="/login" access="permitAll" />
<security:intercept-url pattern="/redeem" access="permitAll" />
<security:intercept-url pattern="/redeem_code" access="permitAll" />
<security:intercept-url pattern="/static/**" access="permitAll" />
<security:intercept-url pattern="/*" access="isAuthenticated()" />
<security:intercept-url pattern="/**" access="isAuthenticated()" />
<security:intercept-url pattern="/**" access="denyAll" />
<security:form-login login-page="/login" authentication-failure-url="/login?error=true" />
<security:logout logout-success-url="/" />
<security:remember-me key="offersAppKey" user-service-ref="jdbcUserService" />
</security:http>
<security:global-method-security secured-annotations="enabled" />
<!-- <bean id="passwordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder" /> -->
</beans>
다음 줄은 web.xml 파일에 있습니다.
<filter>
<display-name>springSecurityFilterChain</display-name>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Tomcat 8.0과 Maven을 통한 모든 최신 종속성을 사용하고 있습니다.
해결법
-
==============================
1.이것이 봄 보안이 기본적으로 작동하는 방식입니다.
이것이 봄 보안이 기본적으로 작동하는 방식입니다.
문서에서 :
anonymousUser인지 확인해야하는 경우 Authentication 개체가 AnonymousAuthenticationToken 인스턴스인지 여부를 확인할 수 있습니다.
from https://stackoverflow.com/questions/26101738/why-is-the-anonymoususer-authenticated-in-spring-security by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 설정 내의 조건문 (0) | 2019.01.03 |
---|---|
[SPRING] @PostConstruct 메서드는 Spring에서 호출되지 않습니다. (0) | 2019.01.03 |
[SPRING] 스프링 웹 서비스가 모든 SOAP 요청을 기록하게하려면 어떻게해야합니까? (0) | 2019.01.03 |
[SPRING] JPA : 특정 필드 만 업데이트 (0) | 2019.01.03 |
[SPRING] Tomcat 봄 부팅 응용 프로그램 속성을 읽지 못함 (0) | 2019.01.03 |