Я новичок в Spring MVC. Я работаю над веб-страницей, на которой пользователи смогут войти в систему после того, как они зарегистрировались и активировали себя. Я успешно реализовал часть входа в систему, она отлично работает. Я хотел бы проверить, активировал ли пользователь свою учетную запись по электронной почте до запуска процесса входа в систему. Является ли это возможным? Я пытался решить эту проблему с помощью перехватчика входа в систему, но кажется, что значение по умолчанию «/ j_spring_security_check» не может быть перехвачено. Кроме этой ссылки перехватчик работает со всеми url-ами. Можно ли перехватить эту ссылку по умолчанию?
Мой spring-security.xml
...
<http use-expressions="true">
<intercept-url pattern="/admin**" access="hasRole('ADMIN')" />
<access-denied-handler error-page="/403" />
<form-login login-page="/login"
authentication-failure-url="/login?error"
username-parameter="username"
password-parameter="password"/>
<logout logout-success-url="/login?logout" />
<!--enable csrf protection-->
<csrf />
</http>
<authentication-manager>
<authentication-provider user-service-ref="loginService" />
</authentication-manager>
ЛогинСервис
@Service("loginService")
public class LoginServiceImpl implements UserDetailsService {
//It is a regular UserDetailsService nothing extra stuff and works fine
...
}
Логин.jsp
....
<div id="login-box">
<span style="color: red">${message}</span>
<c:url value="/j_spring_security_check" var="loginUrl"/>
<form name='f' action="${loginUrl}" method="post">
<p>
<label for="username">Email</label>
<input type="text" id="username" name="username"/>
</p>
<p>
<label for="password">Password</label>
<input type="password" id="password" name="password"/>
</p>
<input type="hidden"
name="${_csrf.parameterName}"
value="${_csrf.token}"/>
<button type="submit" class="btn">Log in</button>
</form>
</div>
...
MVC-диспетчер-servlet.xml
...
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/j_spring_security_check"/>
<bean id="logininterceptor" class="org.psi.controller.LoginInterCeptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
...
ЛогинПерехватчик
public class LoginInterCeptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
//Do some check
System.out.println("some check");
return true;
}
}
Любое другое возможное решение приветствуется.