1、异常
No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton...
2、情况说明
使用fastjson转换entity为string(String jsonStr=JSON.toJsonString(entity))时报出的异常;
说实话,第一眼看到转json字符串报出SecurityManager异常时,我整个人都蒙b了,这是什么情况?我就是一个实体类转json字符串啊,怎么会爆出这个异常呢?百度这个异常,没有发现一个情况和这个相关。只一步一步的找了。坑死了......
3、原因
entity继承的基类BaseEntity中有一个这样的getter方法,如下:
public String getCurrentAuditor() {
Subject subject = SecurityUtils.getSubject();
if(subject == null) {
return "admin";
}
return subject.getPrincipal().toString();
}
就是这个方法导致了fastjson转化entity为字符串失败,只能先转map再转json字符串了。