3.springboot整合Shrio和Thymeleaf

1.添加pom.xml

<dependency>
    <groupId>com.github.theborakompanioni</groupId>

    <artifactId>thymeleaf-extras-shiro</artifactId>
    <version>2.0.0</version>
</dependency>

2.如果版本有問題需要改,我的沒問題 如果出現問題百度合適版本再改改

<properties>
 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
    <java.version>1.8</java.version>
     //版本修改合適的
    <thymeleaf.version>3.0.0.RELEASE</thymeleaf.version>
   //版本修改合適的
    <thymeleaf-layout-dialect.version>2.0.0</thymeleaf-layout-dialect.version>
 
</properties>

3.shiroConfig配置添加一個bean 假如這裏notfound 說明你的依賴版本有問題
,用於ShiroDialect和thymeleaf標籤配合使用

@Bean(name = "shiroDialect")
 
    public ShiroDialect shiroDialect(){
 
    return new ShiroDialect();
 
}

4.擁有權限的用戶才能看到有權限的功能

<!-- 驗證當前用戶是否爲“訪客”,即未認證(包含未記住)的用戶。 -->
 
<p shiro:guest="">Please <a href="login.html">login</a></p>
 
 
 
 
 
<!-- 認證通過或已記住的用戶。 -->
 
<p shiro:user="">
 
Welcome back John! Not John? Click <a href="login.html">here</a> to login.
 
</p>
 
 
 
<!-- 已認證通過的用戶。不包含已記住的用戶,這是與user標籤的區別所在。 -->
 
<p shiro:authenticated="">
 
Hello, <span shiro:principal=""></span>, how are you today?
 
</p>
 
<a shiro:authenticated="" href="updateAccount.html">Update your contact information</a>
 
 
 
<!-- 輸出當前用戶信息,通常爲登錄帳號信息。 -->
 
<p>Hello, <shiro:principal/>, how are you today?</p>
 
 
 
 
 
<!-- 未認證通過用戶,與authenticated標籤相對應。與guest標籤的區別是,該標籤包含已記住用戶。 -->
 
<p shiro:notAuthenticated="">
 
Please <a href="login.html">login</a> in order to update your credit card information.
 
</p>
 
 
 
<!-- 驗證當前用戶是否屬於該角色。 -->
 
<a shiro:hasRole="admin" href="admin.html">Administer the system</a><!-- 擁有該角色 -->
 
 
 
<!-- 與hasRole標籤邏輯相反,當用戶不屬於該角色時驗證通過。 -->
 
<p shiro:lacksRole="developer"><!-- 沒有該角色 -->
 
Sorry, you are not allowed to developer the system.
 
</p>
 
 
 
<!-- 驗證當前用戶是否屬於以下所有角色。 -->
 
<p shiro:hasAllRoles="developer, 2"><!-- 角色與判斷 -->
 
You are a developer and a admin.
 
</p>
 
 
 
<!-- 驗證當前用戶是否屬於以下任意一個角色。 -->
 
<p shiro:hasAnyRoles="admin, vip, developer,1"><!-- 角色或判斷 -->
 
You are a admin, vip, or developer.
 
</p>
 
 
 
<!--驗證當前用戶是否擁有指定權限。 -->
 
<a shiro:hasPermission="userInfo:add" href="createUser.html">添加用戶</a><!-- 擁有權限 -->
 
 
 
<!-- 與hasPermission標籤邏輯相反,當前用戶沒有制定權限時,驗證通過。 -->
 
<p shiro:lacksPermission="userInfo:del"><!-- 沒有權限 -->
 
Sorry, you are not allowed to delete user accounts.
 
</p>
 
 
 
<!-- 驗證當前用戶是否擁有以下所有角色。 -->
 
<p shiro:hasAllPermissions="userInfo:view, userInfo:add"><!-- 權限與判斷 -->
 
You can see or add users.
 
</p>
 
 
 
<!-- 驗證當前用戶是否擁有以下任意一個權限。 -->
 
<p shiro:hasAnyPermissions="userInfo:view, userInfo:del"><!-- 權限或判斷 -->
 
You can see or delete users.
 
</p>
 
<a shiro:hasPermission="pp" href="createUser.html">Create a new User</a>
 
</body>
 
</html>

5.首頁,可以自己慢慢嘗試:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
    <meta charset="UTF-8">
    <title>用戶的測試頁面</title>
</head>
<body>
<h2 th:text="${name}"></h2>
<hr/>
<div><a href="/login">登陸</a></div>
<div shiro:user="">
<p> 進入用戶添加功能:<a href="/add">用戶添加,登陸就可以操作</a></p>
</div>
<div shiro:hasPermission="addProduct">
<p>進入用戶更新功能:<a href="/update">用戶更新,擁有addProduct權限可以操作</a></p>
</div>
<div shiro:hasRole="admin">
<p >admin頁面:<a href="/admin">超級管理admin角色界面</a></p>
</div>
<p shiro:hasRole="productManager">productManager產品管理員</p>

<p shiro:hasRole="orderManager">orderManager訂單管理員</p>

<p shiro:hasAnyPermissions="editeOrder,updateOrder,listProduct">您的權限至少有以下的一種,editeOrder,updateOrder,listProduct</p>

<p shiro:lacksRole="admin">您不是admin角色</p>

<p  shiro:notAuthenticated="">您還沒有登陸,請點擊上面的登陸哦</p>

<!-- 輸出當前用戶信息,通常爲登錄帳號信息。 -->

<p>Hello, <shiro:principal/>輸出當前用戶的信息</p>
<!-- 已認證通過的用戶。不包含已記住的用戶,這是與user標籤的區別所在。 -->

<p shiro:authenticated="">

    Hello, <span shiro:principal=""></span>已認證通過的用戶。不包含已記住的用戶

</p>
<!-- 驗證當前用戶是否爲“訪客”,即未認證(包含未記住)的用戶。 -->

<p shiro:guest="">Please <a href="/login">login</a> 沒有登陸可以看到的頁面</p>
<!-- 認證通過或已記住的用戶。 -->

<p shiro:user="">
    認證通過或已記住的用戶。
    Welcome back John! Not John? Click <a href="login.html">here</a> to login.

</p>

</body>
</html>

總結:這個可以實現沒有權限的看不到頁面 和沒有權限操作的用戶不顯示按鈕 比如增刪改按鈕等,缺點就是每個div好像都需要權限認證一遍 太費了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章