當前位置:成語大全網 - 書法字典 - 如何在java中進行權限管理

如何在java中進行權限管理

首先,介紹以下想法:

1,用戶表用戶;

2.角色表;

3.菜單;

4.角色菜單權限表role _ menu

5.用戶菜單權限表user _ menu

如圖所示:

根據用戶角色進行權限分配,並將權限分配給用戶;註意菜單中按鈕(增加、刪除、修改)的權限放在中間表格(user _ menu);

1.添加用戶時,必須根據用戶的角色分配權限。壹定要分批添加。批,批,批,重要的事情說三遍,不要查詢角色權限,然後循環for,效率太低;

SQL如下所示:

插入到sys_user_menu(UserId,MenuId,DelPower,?UpdPower,?InsPower,?ViewPower)

從sys_role_menu中選擇#{userId} UserId,MenuId,1 DelPower,1 UpdPower,1 InsPower,1 ViewPower其中RoelId = #{roleId}

UpdPower默認可用,所以都是1,這樣可以根據角色查詢直接添加權限,響應時間大大提高;

2.修改用戶角色時,記得重新分配用戶權限!這個不能忘,可以用上面的方法;

商業方法:

如果角色沒有被修改,就不需要重新分配權限,所有的userRole都被重置為null。如果角色被修改,原始權限將被刪除並重新分配。

3.最後,優化的時間是根據用戶查詢權限。這是我壹開始做的,查詢角色權限和用戶權限,返回前端處理。結果就很卡,基本上要三四秒,

解決,壹步到位;查詢會返回所有數據。

以下SQL:

選擇菜單。MenuId id,ParentId pid,MenuName文本,

(SELECT COUNT(1)FROM sys _ user _ menu其中UserId = #{userId} AND?MenuId = sm。MenuId)是Show,

(選擇串聯(

(案例當smenu。InsPower = 1 th EN 1 ELSE 0 END),',',

(案例當smenu。del power = 1 th EN 1 ELSE 0 END),',',

(案例當smenu。upd power = 1 th EN 1 ELSE 0 END),',',

(案例當smenu。view power = 1 th EN 1 ELSE 0 END))

從sys_user_menu smenu WHERE smenu。UserId = #{userId}

然後呢。斯麥努。MenuId = sm。MenuId) MenuInfo

從系統角色菜單sm內部連接sm上的系統菜單菜單。MenuId =菜單。MenuId

其中RoelId = #{roleId}

首先根據角色ID查詢權限,然後子查詢用戶是否有此權限,如果有,返回1木材使用,返回0;

最後直接把按鈕權限拼接成字符串,分別對應添加、刪除、修改、查看1,有沒有這個按鈕;

優化後,無論是添加還是修改用戶,加載用戶權限都可以控制在1~2秒;