想使用instanceof 来判断类型的时候为什么会直接跳过的呢
if (principal instanceof CsUser) {
Long UserId = csJwtService.getAuthenticationId();
Set<String> urls = rbacUrlService.urls( UserId );
//不能使用等于来比较
for (String url : urls) {
//如果存在url就返回true
if (antPathMatcher.match(url, request.getRequestURI())) {
hasPermission = true;
break;
}
}
}
在这段代码开头加上
principal = new CsUser();
,,,
看看是否能走入if
principal instanceof CsUser返回false说明principal不是CsUser实例,下面代码也没有使用上principal这个变量,这里判断有什么作用呢?
principal 如果我没记错,应该时出现在shiro中的一个数据结构,而CsUser,如果没猜错,这是你自己定义的一个数据结构,两者之间不存在继承或者实现关系,
你使用instanceof这个语法糖来判断,那返回值是false。那自然你的方法体中的内容是无法执行的。