SpringBoot:整合layui、退出功能


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層的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM