나는 잠시 동안 봄 보안으로 놀았으며 인증 및 권한 부여가 올바르게 작동하는 경우에도 JSP의 보안 주체에 액세스 할 수 없습니다. 봄 보안 : 교장은 어디로 갔습니까?
이
내 index.jsp가 있습니다 :<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<%@ page import="org.springframework.security.core.context.SecurityContextHolder" %>
<a href="forAuthenticated.jsp">for authenticated</a><br/>
<a href="admin/adminUsers.jsp">for admins</a>
<sec:authorize access="! isAuthenticated()">
not logged in
</sec:authorize>
<sec:authorize access=" isAuthenticated()">
logged in
</sec:authorize>
Your principal object is....: <sec:authentication property="principal.username" /><br/>
Authentication = <%=SecurityContextHolder.getContext().getAuthentication() %>
<p><a href="j_spring_security_logout">Logout</a></p>
그리고 이것은 *의 - 보안 - XML이다 : 나는이 로그인에 대한 메시지가있어 forAuthenticated.jsp에 액세스하려고하면
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<http pattern="/loggedout.jsp" security="none"/>
<http pattern="/index.jsp" security="none"/>
<http pattern="/login.jsp" security="none"/>
<http auto-config="true">
<intercept-url pattern="/admin/*" access="ROLE_ADMIN,ROLE_SUPERUSER" />
<intercept-url pattern="/forAuthenticated.jsp" access="ROLE_USER" />
<intercept-url pattern="/logoutSuccess*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login.jsp"
authentication-failure-url = "/login.jsp?login_error=1"/>
<logout logout-success-url="/loggedout.jsp" delete-cookies="JSESSIONID"/>
<session-management invalid-session-url="/sessionTimeout.htm" />
</http>
<global-method-security pre-post-annotations="enabled"/>
<authentication-manager alias="authenticationManager">
<authentication-provider>
<user-service id="userDetailsService">
<user name="username" password="password" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="test" password="test" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
. test/test를 입력 한 후에 forAuthenticated 페이지에는 액세스하지만 admin/adminUsers.jsp에는 액세스하지 않습니다. 괜찮 았지만 문제는 index.jsp에서 프린시 펄에 액세스 할 수 없다는 것입니다. 이것은 test/test로 로그인했을 때 index.jsp가 출력하는 것입니다. 나는 not logged in
도 logged in
흔적을 볼 수 없습니다 : 나는 무엇을
for authenticated
for admins
Your principal object is....:
null
Logout
를 놓친 거지? 나는 무엇을 두 번 ckeck()해야합니까? 봄 보안 필터 체인을 건너 뛰는 핸들러 메소드에 바로 파견 할 효과적으로 주어진 패턴과 일치하는 요청이 발생
<http pattern="/index.jsp" security="none"/>
: Karthikeyan 그의 주석에서 알 수 있듯이
귀하의 index.jsp 보안 아무도 확보 다른 페이지에서 그것을 시도가 없습니다. –