1、訪問Layui官網(https://www.layui.com/),下載模板
(1)以后台作為示例來進行整合
(2)下載代碼
(3)在項目中導入靜態資源
注意:要將靜態資源在shiro的過濾器中設置為不過濾
2、修改下載的layui代碼
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.thymeleaf.org/thymeleaf-extras-shiro"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>SpringBoot整合layui</title> <link rel="stylesheet" th:href="@{/layui/css/layui.css}"> </head> <body class="layui-layout-body"> <div class="layui-layout layui-layout-admin"> <div class="layui-header"> <div class="layui-logo">layui 后台布局</div> <!-- 頭部區域(可配合layui已有的水平導航) --> <ul class="layui-nav layui-layout-left"> <li class="layui-nav-item"><a href="">控制台</a></li> <li class="layui-nav-item"><a href="">商品管理</a></li> <li class="layui-nav-item"><a href="">用戶</a></li> <li class="layui-nav-item"> <a href="javascript:;">其它系統</a> <dl class="layui-nav-child"> <dd><a href="">郵件管理</a></dd> <dd><a href="">消息管理</a></dd> <dd><a href="">授權管理</a></dd> </dl> </li> </ul> < class="layui-nav layui-layout-right"> <shiro:user> <li class="layui-nav-item"> <a href="javascript:;"> <img src="http://t.cn/RCzsdCq" class="layui-nav-img"> 賢心 </a> <dl class="layui-nav-child"> <dd><a href="">基本資料</a></dd> <dd><a href="">安全設置</a></dd> </dl> </li> <li class="layui-nav-item"><a href="">退了</a></li> </shiro:user> <shiro:guest> <label style="color: white; text-decoration: underline" onclick="javascript:location.href='login.html'">登錄</label> </shiro:guest> </ul> </div> <div class="layui-side layui-bg-black"> <div class="layui-side-scroll"> <!-- 左側導航區域(可配合layui已有的垂直導航) --> <ul class="layui-nav layui-nav-tree" lay-filter="test"> <li class="layui-nav-item layui-nav-itemed"> <a class="" href="javascript:;">用戶</a> <dl class="layui-nav-child"> <dd><a href="javascript:;">學生</a></dd> <dd><a href="javascript:;">教師</a></dd> <dd><a href="javascript:;">管理員</a></dd> </dl> </li> <li class="layui-nav-item"> <a href="javascript:;">學生</a> <dl class="layui-nav-child"> <shiro:hasPermission name="stu_select"><dd><a href="javascript:;">查詢</a></dd></shiro:hasPermission> </dl> <a href="javascript:;">教師</a> <dl class="layui-nav-child"> <shiro:hasPermission name="tea_select"><dd><a href="javascript:;">查詢</a></dd></shiro:hasPermission> <shiro:hasPermission name="tea_delete"><dd><a href="javascript:;">刪除</a></dd></shiro:hasPermission> <shiro:hasPermission name="tea_update"><dd><a href="javascript:;">更新</a></dd></shiro:hasPermission> </dl> <a href="javascript:;">管理員</a> <dl class="layui-nav-child"> <shiro:hasPermission name="man_select"><dd><a href="javascript:;">查詢</a></dd></shiro:hasPermission> <shiro:hasPermission name="man_delete"><dd><a href="javascript:;">刪除</a></dd></shiro:hasPermission> <shiro:hasPermission name="man_update"><dd><a href="javascript:;">更新</a></dd></shiro:hasPermission> <shiro:hasPermission name="man_add"><dd><a href="javascript:;">查詢</a></dd></shiro:hasPermission> </dl> </li> </ul> </div> </div> <div class="layui-body"> <!-- 內容主體區域 --> <div style="padding: 15px;">內容主體區域</div> </div> <div class="layui-footer"> <!-- 底部固定區域 --> © layui.com - 底部固定區域 </div> </div> <script th:src="@{/layui/layui.js}"></script> <script> //JavaScript代碼區域 layui.use('element', function(){ var element = layui.element; }); </script> </body> </html>
引入thymleaf與shiro(此次演示是結合shrio的)
添加shiro的標簽,根據用戶身份確定在頁面要顯示的用戶權限,根據是否是登錄用戶確定頁面的顯示內容
3、測試
(1)學生
(2)教師
(3)管理員
(4)游客訪問與登錄用戶訪問
游客訪問:
用戶訪問:
4、退出功能
(1)在shiro過濾器中進行配置
@Bean//過濾器 public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultSecurityManager securityManager) { ShiroFilterFactoryBean filter = new ShiroFilterFactoryBean(); //過濾器是shiro執行權限的核心,進行認證和授權是需要SecurityManager的 filter.setSecurityManager(securityManager); //設置shiro的攔截規則 Map<String, String> filterMap = new HashMap<>(); //user:使用remberme的用戶可訪問 //perms:對應權限可訪問 //role:對應的角色才能訪問 filterMap.put("/exit", "logout"); filterMap.put("/", "anon");//anon表示不攔截(匿名用戶可訪問) filterMap.put("/login.html", "anon"); filterMap.put("/regist.html", "anon"); filterMap.put("/user/login", "anon"); filterMap.put("/user/regist", "anon"); filterMap.put("/static/**", "anon"); filterMap.put("/layui/**", "anon"); filterMap.put("/static/layui/css", "anon"); filterMap.put("/static/layui/js", "anon"); filterMap.put("/index.html", "anon"); filterMap.put("/test.html", "anon"); filterMap.put("/**", "authc");//authc表示認證用戶可訪問 filter.setFilterChainDefinitionMap(filterMap); filter.setLoginUrl("/login.html"); //設置未授權訪問的頁面 filter.setUnauthorizedUrl("/login.html"); return filter; }
(2)在頁面的退出按鈕上跳轉到退出路徑
<li class="layui-nav-item"><a href="/exit">退了</a></li>
這個過程是不需要書寫controller層的