fastjson No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.uti
阿新 • • 發佈:2019-01-09
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字串了。