Shiro框架基礎使用及一些小拓展

2021-10-04 23:41:26 字數 3690 閱讀 9390

@configuration

public class webexceptionhandlerconfig

}

在.yml 配置檔案設定上傳檔案 抵達的資料夾路徑

bootdo:

uploadpath: f:/downdload/

先定義上傳路徑的類

@component

@configurationproperties(prefix="bootdo")

public class bootdoconfig

public void setuploadpath(string uploadpath)

}

在config目錄下 新建用於對映類 (繼承webmvcconfigureradapter)

@component

class webconfigurer extends webmvcconfigureradapter

}

public class md5util  catch (nosuchalgorithmexception e)  catch (unsupportedencodingexception e) 

return result;

} //手動驗證

public static void main(string args) throws nosuchalgorithmexception, unsupportedencodingexception

}

獲取當前環境下登陸的使用者物件 此類放進utils包裡

在userrealm包新建myuserrealm類繼承 authorizingrealm 會繼承2個方法

public class myuserrealm extends authorizingrealm

/*** 告訴shiro哪個subject有哪些訪問許可權

*/protected authorizationinfo dogetauthorizationinfo(principalcollection principals)

} system.out.println("使用者: "+user.getusername()+" 的許可權有:"+permissions);

******authorizationinfo authorinfo = new ******authorizationinfo();

authorinfo.setstringpermissions(permissions);

return authorinfo; }

/*** 實際的登陸驗證

*/protected authenticationinfo dogetauthenticationinfo(authenticationtoken token) throws authenticationexception

//啟用md5方式判斷

if(md5util.validatepwd(password, user.getpassword(),username))else

}}

@configuration

public class shiroconfig

@bean

public securitymanager securitymanager(myuserrealm myuserrealm)

@bean

public myuserrealm muserrealm(sysuserservice userservice)

/*** 讓shiro參與到spring的bean的管理中來

* @return

*/@bean

public lifecyclebeanpostprocessor lifecyclebeanpostprocessor()

/*** 掃瞄所有的bean尋找通知並將通知器所切入bean中

* @return

*/@bean

public defaultadvisorautoproxycreator advisorautoproxycreator()

@bean

public authorizationattributesourceadvisor attributesourceadvisor(securitymanager securitymanager)

}

登陸的控制器

} 登陸的頁面

使用者名稱:

密碼:

/**

* 按照也沒元件的特點生成所有對應使用者選單的集合

*/@autowired

private sysuserdao sysuserdao;

@autowired

private sysmenudao menudao;

@autowired

private sysrolemenudao rolemenudao;

@autowired

private sysuserroledao userroledao;

@override

public linkedhashmap> listallmenusbyuserid(long userid)

}} allmenus.sort(new comparator()

if (o2 == null)

if (o1.getparentid().intvalue() != o2.getparentid())

if (o2.getparentid() == null)

return (int) (o1.getparentid() - o2.getparentid());

}if (o1.getordernum().intvalue() != o2.getordernum())

if (o2.getordernum() == null)

return o1.getordernum() - o2.getordernum();

} else

}});

// 整理選單到總結構中

linkedhashmap> allmenuinorder = new linkedhashmap<>();

mapallparents = new hashmap<>();

for (sysmenudo m : allmenus)

if (m.getparentid() == null || m.getparentid() == 0) else

list.add(m);

}} return allmenuinorder;

}

JS框架的一些小總結

為了防止和別的庫的衝突,用閉包把整個框架安全地保護好。我們待會的 都寫在裡面。這裡建立乙個全域性變數 window.o 就是在window物件裡加個o,它等價於 oct 相當於jquery jquery這樣的別稱,意味著以後用oct 或o 來進行操作。把window.o寫成window.那就和jq的...

關於achartengine的使用一些小經驗

最近專案上要使用圖表,便開始在網上找各種圖表架包,好看的都是收費的,最後還是決定用google的achartengine.achartengine使用起來還算好,就是修改樣式很煩.下面就分享下開發經驗吧.所有的chart都分兩塊,一塊是renderer 如xymultipleseriesrender...

React Redux使用的一些小優化

之前畫了一張redux的流程圖,可以看看右下角的部分,可以看出來怎麼進行優化。也就是能不改變就不改變。比如不要做下面這種無謂的事情 function reducer state,action 這個 雖然在selector中,也可以通過arestatepropsequal來判斷計算後的state是否發...