shiro不跳转successUrl问题

shiro配置successUrl却不跳转的问题


shiroFilter配置

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
    <property name="securityManager" ref="securityManager" />
    <!-- 配置我们的登录请求地址 -->
    <property name="loginUrl" value="/login" />
    <!-- 配置我们在登录页登录成功后的跳转地址,
        源码中fallbackUrl其实就是你shiroFilter bean里面设置的successUrl,
        但是successUrl在被fallbackUrl赋值之前就已经被savedRequest.getRequestUrl()取代了,
        如果真要解决,就得继承FormAuthenticationFilter -->
    <!--<property name="successUrl" value="/" />-->
    <!-- 如果您请求的资源不再您的权限范围,则跳转到以下请求地址 -->
    <property name="unauthorizedUrl" value="/403" />
    <!-- 权限配置 -->
    <property name="filterChainDefinitions">
        <value>
            <!-- anon表示此地址不需要任何权限即可访问 -->
            /static/**=anon
            <!-- perms[user:query]表示访问此连接需要权限为user:query的用户 -->
            /user=perms[user:query]
            <!--/user=roles[normal]-->
            <!-- roles[manager]表示访问此连接需要用户的角色为manager -->
            /user/add=roles[manager]
            /user/del/**=roles[admin]
            /user/edit/**=roles[manager]
            <!--所有的请求(除去配置的静态资源请求或请求地址为anon的请求)都要通过登录验证,如果未登录则跳到/login-->
            /user/** = authc
        </value>
    </property>
</bean>


跟踪源码如下:

public static void redirectToSavedRequest(ServletRequest request, ServletResponse response, String fallbackUrl)
            throws IOException {
        String successUrl = null;
        boolean contextRelative = true;
        SavedRequest savedRequest = WebUtils.getAndClearSavedRequest(request);
        if (savedRequest != null && savedRequest.getMethod().equalsIgnoreCase(AccessControlFilter.GET_METHOD)) {
            successUrl = savedRequest.getRequestUrl();
            contextRelative = false;
        }

        if (successUrl == null) {
            successUrl = fallbackUrl;
        }

        if (successUrl == null) {
            throw new IllegalStateException("Success URL not available via saved request or via the " +
                    "successUrlFallback method parameter. One of these must be non-null for " +
                    "issueSuccessRedirect() to work.");
        }

        WebUtils.issueRedirect(request, response, successUrl, null, contextRelative);
    }

源码中fallbackUrl其实就是你shiroFilter bean里面设置的successUrl, 但是successUrl在被fallbackUrl赋值之前就已经被savedRequest.getRequestUrl()取代了, 如果真要解决,就得继承FormAuthenticationFilter



转载于:https://my.oschina.net/u/1020238/blog/544612

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值