Spring Security:根据某些条件重定向登录的用户

纳舒尔德

我是使用Spring Security 3的新手。

我要执行以下操作:用户登录时,我希望系统验证用户是否已确认其电子邮件地址以及用户是否已配置其帐户配置文件。

我不知道该怎么做。

我尝试了这个:

<http use-expressions="true" auto-config="true">
    <intercept-url ... />
    ...
    <custom-filter after="SECURITY_CONTEXT_FILTER" ref="usrFilter" />
    ...
 </http>

 <b:bean id="usrFilter"
    class="com.zxxztech.zecure.security.MyAuthenticationFilter">
    <b:property name="authenticationManager" ref="authenticationManager" />
    <b:property name="failureHandler">
        <b:bean
            class="org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler">
            <b:property name="exceptionMappings">
                <b:map>
                    <b:entry key="org.springframework.security.authentication.DisabledException" value="/disabled.htm" />
                </b:map>
            </b:property>
        </b:bean>
    </b:property>
 </b:bean>

这是我的过滤器:

public class MyAuthenticationFilter extends GenericFilterBean {
  ...
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

        if (authentication != null) {
            Usuario usuario=(Usuario) authentication.getPrincipal();
            if (usuario.getActivationKey()!=null) {
                ((HttpServletResponse) response).sendRedirect("/activacion");
                return;
            } else if (authentication.getAuthorities().contains(AppRole.NUEVO_USUARIO)) {
                ((HttpServletResponse)response).sendRedirect("/configuracion_modelo");
                return;
            }
        }

        chain.doFilter(request, response);
    }

    ...
}

但是,当我逐步调试应用程序并登录时,过滤器会被无限期地调用,就像在循环中一样。

如何做到这一点的正确方法?

罗伯·温奇

您需要继续对要重定向到的URL进行过滤。例如:

import org.springframework.security.web.util.UrlUtils;

public class MyAuthenticationFilter extends GenericFilterBean {
  ...
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

        if (authentication != null) {
            String currentUrl = UrlUtils.buildRequestUrl((HttpServletRequest) request);
            Usuario usuario=(Usuario) authentication.getPrincipal();
            if("/activacion".equals(currentUrl) || "/configuracion_modelo".equals(currentUrl)) {
                chain.doFilter(request, response);
                return;
            } else if (usuario.getActivationKey()!=null) {
                ((HttpServletResponse) response).sendRedirect("/activacion");
                return;
            } else if (authentication.getAuthorities().contains(AppRole.NUEVO_USUARIO)) {
                ((HttpServletResponse)response).sendRedirect("/configuracion_modelo");
                return;
            }
        }

        chain.doFilter(request, response);
    }

    ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Grails和Spring Security插件:根据角色在登录时重定向用户

来自分类Dev

Spring Security SWF:如何根据某些条件重定向到不同的流

来自分类Dev

Spring Security SWF:如何根据某些条件重定向到不同的流

来自分类Dev

当他尝试进入登录页面时,使用 java spring-security 重定向已经登录的用户

来自分类Dev

如果用户未经授权,Spring Security如何重定向到“登录”页面

来自分类Dev

使用Spring Security登录后无法将用户重定向到所需页面

来自分类Dev

登录后,Spring Security再次重定向到登录页面

来自分类Dev

Spring Security:登录后重定向到登录页面

来自分类Dev

Spring Security:登录后重定向到登录页面

来自分类Dev

登录后,Spring Security再次重定向到登录页面

来自分类Dev

Spring Security-用户身份验证有时会失败,并且用户将被重定向到登录页面

来自分类Dev

Spring Security总是重定向到登录页面

来自分类Dev

Spring Security和angular javascript重定向到登录页面

来自分类Dev

Spring Security:登录后如何重定向到REST URL

来自分类Dev

从Spring Security中排除从登录页面重定向的特定页面

来自分类Dev

成功登录后,Spring Security JSF不重定向

来自分类Dev

Spring Security *始终*重定向到登录表单

来自分类Dev

Spring Security和Angular javascript重定向到登录页面

来自分类Dev

阻止Spring Security在登录/注销后从302重定向

来自分类Dev

Spring Security在登录后始终重定向到“ /”

来自分类Dev

Spring Security将自定义登录页面重定向到其自身-重定向过多

来自分类Dev

使用重定向:uri登录后将Spring Security重定向到页面

来自分类Dev

我想首先查看登录页面,即使任何用户想要访问其他页面也需要在Spring Security中重定向到登录页面

来自分类Dev

Grails Spring Security-登录后总是重定向到特定页面吗?

来自分类Dev

成功登录后如何防止Spring Security重定向到上一页?

来自分类Dev

Spring Security使用基于Java的配置重定向到登录表单

来自分类Dev

成功登录后,Spring Boot Security重定向-未定义

来自分类Dev

JSP和Spring Security:重定向工作正常,但没有登录

来自分类Dev

JSP和Spring Security:重定向工作正常,但没有登录

Related 相关文章

  1. 1

    Grails和Spring Security插件:根据角色在登录时重定向用户

  2. 2

    Spring Security SWF:如何根据某些条件重定向到不同的流

  3. 3

    Spring Security SWF:如何根据某些条件重定向到不同的流

  4. 4

    当他尝试进入登录页面时,使用 java spring-security 重定向已经登录的用户

  5. 5

    如果用户未经授权,Spring Security如何重定向到“登录”页面

  6. 6

    使用Spring Security登录后无法将用户重定向到所需页面

  7. 7

    登录后,Spring Security再次重定向到登录页面

  8. 8

    Spring Security:登录后重定向到登录页面

  9. 9

    Spring Security:登录后重定向到登录页面

  10. 10

    登录后,Spring Security再次重定向到登录页面

  11. 11

    Spring Security-用户身份验证有时会失败,并且用户将被重定向到登录页面

  12. 12

    Spring Security总是重定向到登录页面

  13. 13

    Spring Security和angular javascript重定向到登录页面

  14. 14

    Spring Security:登录后如何重定向到REST URL

  15. 15

    从Spring Security中排除从登录页面重定向的特定页面

  16. 16

    成功登录后,Spring Security JSF不重定向

  17. 17

    Spring Security *始终*重定向到登录表单

  18. 18

    Spring Security和Angular javascript重定向到登录页面

  19. 19

    阻止Spring Security在登录/注销后从302重定向

  20. 20

    Spring Security在登录后始终重定向到“ /”

  21. 21

    Spring Security将自定义登录页面重定向到其自身-重定向过多

  22. 22

    使用重定向:uri登录后将Spring Security重定向到页面

  23. 23

    我想首先查看登录页面,即使任何用户想要访问其他页面也需要在Spring Security中重定向到登录页面

  24. 24

    Grails Spring Security-登录后总是重定向到特定页面吗?

  25. 25

    成功登录后如何防止Spring Security重定向到上一页?

  26. 26

    Spring Security使用基于Java的配置重定向到登录表单

  27. 27

    成功登录后,Spring Boot Security重定向-未定义

  28. 28

    JSP和Spring Security:重定向工作正常,但没有登录

  29. 29

    JSP和Spring Security:重定向工作正常,但没有登录

热门标签

归档