1. 程式人生 > >fastjson No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.uti

fastjson No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.uti

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字串了。