问题描述
Cntroller 请求控制类
ShiroConfig配置类
如上代码,请求/login,因为设置了setSuccessUrl属性的原因,请求成功后正常是会跳转到/index下面才对,可是经过测试,却返回了 login success,这明显是不符合我的设计的。
问题分析
问题的原因很可能是这个setSuccessUrl属性没有生效,所以我进行了debug,排查了一下问题的原因。
发现在Shiro的WebUtils这个工具类里面,有这么一个判断,这个正是设置setSuccessUrl属性的地方,所以在这里你设置的setSuccessUrl才会生效。
很奇怪的是,如果你的请求方式是@RestController,也就是返回字符串格式,你的/login请求就必须是post方式,不然不会调用Shiro的WebUtils这个工具类,具体问题没有深入研究,只找到了失效的原因,有兴趣的大佬可以自己研究。
问题解决及注意点
如果你的/login控制层是@RestController,那么请求方式就必须是PostMapping。
否则Shiro的WebUtils就不会被调用,setSuccessUrl则不会生效。