[SPRING] 스프링 보안 2.0을 사용하여 JSP 페이지에 오류 메시지를 표시하는 방법
SPRING스프링 보안 2.0을 사용하여 JSP 페이지에 오류 메시지를 표시하는 방법
안녕하세요. 저는 현재 봄 보안을 사용하고 있습니다. 그것은 잘 작동합니다. 그러나 로그인에 실패하면 오류 메시지가 표시되지 않습니다. 오류 메시지를 어떻게 표시 할 수 있을지 궁금합니다.
내 applicationContext.xml에 ResourceBundleMessageSource를 구성했습니다.
<!-- Spring security error message config -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>messages</value>
</list>
</property>
</bean>
그리고 내 security-config.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:David="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-2.0.xsd">
<David:http auto-config="true" access-denied-page="/accessDenied.html">
<!-- Don`t set any role restriction on login.jsp -->
<David:intercept-url pattern="/login.jsp"
access="IS_AUTHENTICATED_ANONYMOUSLY" />
<!-- Restrict access to All other pages -->
<David:intercept-url pattern="/admin.jsp"
access="ROLE_ADMIN" />
<!-- Set the login page and what to do if login fails -->
<David:form-login login-page="/login.jsp"
default-target-url="/"/>
<David:logout logout-success-url="/" />
</David:http>
<!-- Specify login examnination strategy -->
<David:authentication-provider>
<David:password-encoder hash="md5" />
<David:jdbc-user-service
data-source-ref="dataSource"
users-by-username-query="select username, password, status as enabled from user where username=?"
authorities-by-username-query="select u.username,r.name as authority
from user u
join user_role ur
on u.id=ur.user_id
join role r
on r.id=ur.role_id
where u.username=?" />
</David:authentication-provider>
</beans>
내 JSP 페이지 :
<%@ page contentType="text/html;charset=utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page
import="org.springframework.security.ui.AbstractProcessingFilter"%>
<%@ page
import="org.springframework.security.ui.webapp.AuthenticationProcessingFilter"%>
<%@ page import="org.springframework.security.AuthenticationException"%>
<form id="myform" class="cmxform" method="post"
action="${pageContext.request.contextPath}/j_spring_security_check">
<fieldset>
<legend>
Please input correct username and password to login
</legend>
<p>
<label for="user">
Username:
</label>
<input id="user" name="j_username" />
</p>
<p>
<label for="pass">
Password:
</label>
<input type="password" name="j_password" id="password" />
</p>
<p>
<input type="submit" class="submit" value="Login" />
</p>
</fieldset>
</form>
어떤 제안? 어떤 도움을 주시면 감사하겠습니다.
해결법
-
==============================
1.jsp가 실제로 오류를 표시하는 위치는 어디입니까? 좋아요.
jsp가 실제로 오류를 표시하는 위치는 어디입니까? 좋아요.
<c:if test="${not empty param.error}"> <!-- Display error message --> </c:if>
이 메시지를 사용자 정의하려면 다음을 참조하십시오.
-
==============================
2.
<c:if test="${not empty param.login_error}"> <div class="error"> Your login attempt was not successful, try again.<br /> Reason: #{sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message} </div> </c:if>
-
==============================
3.이 작품
이 작품
<c:if test="${param.error != null}"> Error </c:if>
-
==============================
4.어쩌면 당신은 이것을 시도 할 수 있습니다.
어쩌면 당신은 이것을 시도 할 수 있습니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
jsp 페이지의 c 태그에 대해 다음과 같이 오류 메시지 표시를 위해 아래와 같이 입력하십시오.
<c:when test="${param.error == 1}"> <h3 style="font-size:20; color:#FF1C19;">Wrong id or password!</h3> </c:when>
"param.error == 1"은 스프링 보안 (security-config.xml)과 같은 반환 값을 얻을 수 있습니다.
<beans:bean id="authenticationFailureHandler" class="org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler"> <beans:property name="exceptionMappings"> <beans:props> <beans:prop key="org.springframework.security.core.userdetails.UsernameNotFoundException">/login.action?error=1</beans:prop> </beans:props> </beans:property> </beans:bean>
-
==============================
5.이것은 나를 위해 일했다 :
이것은 나를 위해 일했다 :
<c:if test="${not empty sessionScope.SPRING_SECURITY_LAST_EXCEPTION}"> <div class="error"> Your login attempt was not successful, try again.<br /> Reason: ${sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message} </div> </c:if>
-
==============================
6.나는 봄 보안 v 4.0.3을 사용하고있다.
나는 봄 보안 v 4.0.3을 사용하고있다.
비어 있지 않은 것을 사용하는 것은 나를 위해 작동하지 않았다. 그러나 null 검사는 나를 위해 일했습니다.
<c:if test="${ param.error ne null}"> Display error message </c:if>
from https://stackoverflow.com/questions/3843913/how-to-display-error-message-in-my-jsp-page-using-spring-security-2-0 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Azure App 서비스에 스프링 부트 jar 배포 (0) | 2019.04.09 |
---|---|
[SPRING] Spring 3 (SWS2) : <context : component-scan>과 <sws : annotation-driven>의 차이점 (0) | 2019.04.09 |
[SPRING] 루트 컨텍스트에서 배포하는 Jboss (0) | 2019.04.09 |
[SPRING] Spring 부트를 사용하여 Intellij의 자산에 대한 라이브로드 (0) | 2019.04.09 |
[SPRING] 스프링 부트 애플리케이션 시작시 H2 TCP 서버를 시작하는 방법은 무엇입니까? (0) | 2019.04.09 |