spring boot之整合shiro實現使用者認證、授權
一.shiro簡介
1.簡介
Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼學和會話管理。使用Shiro的易於理解的API,您可以快速、輕鬆地獲得任何應用程式,從最小的移動應用程式到最大的網路和企業應用程式。
Shiro 主要分為兩個部分就是認證和授權,在個人感覺來看就是查詢資料庫做相應的判斷而已,Shiro只是一個框架而已,其中的內容需要自己的去構建,前後是自己的,中間是Shiro幫我們去搭建和配置好的。
2.涉及到的名詞
Subject
即主體,外部應用與subject進行互動,subject記錄了當前操作使用者,將使用者的概念理解為當前操作的主體,可能是一個通過瀏覽器請求的使用者,也可能是一個執行的程式。 Subject在shiro中是一個介面,介面中定義了很多認證授相關的方法,外部程式通過subject進行認證授,而subject是通過SecurityManager安全管理器進行認證授權
SecurityManager
Authenticator
即認證器,對使用者身份進行認證,Authenticator是一個介面,shiro提供ModularRealmAuthenticator實現類,通過ModularRealmAuthenticator基本上可以滿足大多數需求,也可以自定義認證器。Authorizer
即授權器,使用者通過認證器認證通過,在訪問功能時需要通過授權器判斷使用者是否有此功能的操作許可權。realm
即領域,相當於datasource資料來源,securityManager進行安全認證需要通過Realm獲取使用者許可權資料。二.與spring boot整合
1.pom.xml新增依賴
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.3.2</version>
</dependency>
2.編寫UserRealm類
//UserRealm.java
import com.yang.utils.ShiroUtils;
import com. yang.domain.UserDO;
import com.yang.service.RoleService;
import com.yang.service.UserService;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class UserRealm extends AuthorizingRealm {
@Autowired
UserDao userMapper;
@Autowired
RoleService roleService;
//編寫授權程式碼
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
String userId = ShiroUtils.getUserId();
Set<String> perms = roleService.listPerms(userId);
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
info.setStringPermissions(perms);
System.out.println("");
return info;
}
//編寫認證程式碼
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
String username = (String) token.getPrincipal();
Map<String, Object> map = new HashMap<>(16);
map.put("username", username);
String password = new String((char[]) token.getCredentials());
// 查詢使用者資訊
UserDO user = userService.list(map).get(0);
// 賬號不存在
if (user == null) {
throw new UnknownAccountException("賬號或密碼不正確");
}
// 密碼錯誤
if (!password.equals(user.getPassword())) {
throw new IncorrectCredentialsException("賬號或密碼不正確");
}
// 賬號鎖定
if (user.getStatus().equals("0")) {
throw new LockedAccountException("賬號已被鎖定,請聯絡管理員");
}
SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, password, getName());
return info;
}
}
3.編寫controller類
//使用者登入
@PostMapping("/login")
@ResponseBody
public String ajaxLogin(String username, String password) {
password = MD5Utils.encrypt(username, password);
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
Subject subject = SecurityUtils.getSubject();
try {
subject.login(token);
return "登入成功";
} catch (AuthenticationException e) {
return "使用者或密碼錯誤";
}
}
//登出
@GetMapping("/logout")
String logout() {
SecurityUtils.getSubject.logout();
return "redirect:/login";
}
相關推薦
spring boot之整合shiro實現使用者認證、授權
一.shiro簡介 1.簡介 Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼學和會話管理。使用Shiro的易於理解的API,您可以快速、輕鬆地獲得任何應用程式,從最小的移動應用程式到最大的網路和企業應用程式。 Shiro 主
Spring Boot 整合 Shiro實現認證及授權管理
Spring Boot Shiro 本示例要內容 基於RBAC,授權、認證 加密、解密 統一異常處理 redis session支援 介紹 Apache Shiro 是一個功能強大且易於使用的Java安全框架,可執行身份驗證,授權,加密和會話管理。藉助Shiro易於理解的API,您可以快速輕鬆地保護任何應
spring boot之整合頁面
上篇部落格把正常spring後臺應用都整合進來,搭建成功,但是還沒有頁面應用啊,這兒有個思路,一是可以自己搞個web系統,把spring boot專案當做純粹的後臺提供服務的java專案,web系統通過http client的方式來呼叫;二是直接就在spring
Spring Boot 之整合 EazyUI 打造 Web 應用
Spring Boot 之整合 EazyUI 打造 Web 應用 EazyUI 是一個簡單的使用者介面元件的集合。由於 EazyUI 已經封裝好大部分 UI 基本功能,能幫使用者減少大量的 js 和 css 程式碼。所以,EazyUI 非常適合用於開發簡單的系統或原型系統。 本文示例使用技術點:
spring boot之整合kafka
前陣子專案用到了kafka了,kafka和zookeeper的安裝以及原理在我的另一篇部落格中有提到,在這我就不講了,直接講如何在spring boot專案中整合kafka。 這篇我主要講兩個方法: 方法一我們使用spring原來整合kafka的一個外掛sp
Spring Boot:整合Shiro許可權框架
綜合概述 Shiro是Apache旗下的一個開源專案,它是一個非常易用的安全框架,提供了包括認證、授權、加密、會話管理等功能,與Spring Security一樣屬基於許可權的安全框架,但是與Spring Security 相比,Shiro使用了比較簡單易懂易於使用的授權方式。Shiro屬於輕量級框架,相對
小代學Spring Boot之整合MyBatis
想要獲取更多文章可以訪問我的部落格 - 程式碼無止境。 上一篇小代同學在Spring Boot專案中配置了資料來源,但是通常來講我們訪問資料庫都會通過一個ORM框架,很少會直接使用JDBC來執行資料庫操作的。這麼多ORM框架,選擇哪個好呢? 小代選ORM框架 小代同學最終選用的ORM框架是MyBatis,
SpringBoot整合Shiro登入認證和授權(附demo)
SpringBoot整合Shiro登入認證和授權 廢話不多說,直接上程式碼: 程式碼有點多,想直接拿demo的直接拉到底 ps:demo忘了在哪拿的了,在他的基礎上改了一些 步驟一:pom.xml匯入依賴jar包 <dependencies
008-shiro與spring web項目整合【二】認證、授權、session管理
添加 ner != efi ebs ref private date err 一、認證 1、添加憑證匹配器 添加憑證匹配器實現md5加密校驗。 修改applicationContext-shiro.xml: <!-- realm -->
spring-boot(八) springboot整合shiro-登入認證和許可權管理
Apache Shiro What is Apache Shiro? Apache Shiro是一個功能強大、靈活的,開源的安全框架。它可以乾淨利落地處理身份驗證、授權、企業會話管理和加密。 Apache Shiro的首要目標是易於使用和理解。安全通常很複雜,甚至讓人感到很痛苦,但是Shiro卻不是
apache shiro與spring整合、動態filterChainDefinitions、以及認證、授權
apache shiro是一個安全認證框架,和spring security相比,在於他使用了比較簡潔易懂的認證和授權方式。其提供的native-session(即把使用者認證後的授權資訊儲存在其自身提供Session中)機制,這樣就可以和HttpSession、EJB
170711、spring boot 集成shiro
抽象 one 過濾 註入 char ava 用戶安全 erro 順序 這篇文章我們來學習如何使用Spring Boot集成Apache Shiro。安全應該是互聯網公司的一道生命線,幾乎任何的公司都會涉及到這方面的需求。在Java領域一般有Spring Security、A
Spring Boot之Swagger2整合
一、Swagger2簡單介紹 Swagger2,它可以輕鬆的整合到Spring Boot中,並與Spring MVC程式配合組織出強大RESTful API文件。它既可以減少我們建立文件的工作量,同時說明內容又整合入實現程式碼中,讓維護文件和修改程式碼整合為一體,可以讓我們在修改程式碼邏輯的同時方便的修
SSM整合系列之 整合Shiro實現登陸認證
前言:Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理,本文將介紹Spring整合Shiro實現登陸認證功能。對Shiro需要更深入的瞭解,請自學(一個禮貌的微笑)本人後續也會詳細總結Shiro。繼本文之後我也將繼續完善登陸的RemberMe
Spring boot開發步驟 (包含jsp、mybatis、FastJSON整合)
專案建立好後 先匯入jar 包 /* 注意 這個不能放在dependencies內部 必須放在dependencies外部 */ <parent> <groupId>org.springframework.boot</groupId&g
十九、Spring boot中整合mybatis-generator自動生成程式碼
(一)新增外掛 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugi
Spring Boot之 Controller 接收引數和返回資料總結(包括上傳、下載檔案)
一、接收引數(postman傳送) 1.form表單 @RequestParam("name") String name 會把傳遞過來的Form表單中的name對應到formData方法的nam
spring boot 之取消get、set、toString方法
在springboot 開發中中 使用的是idea在pom.xml加入lombok依賴,記得更新maven <dependency> <groupId>org.projectlombok</groupId&g
spring-boot之di、javaConfig形式管理注入Bean(1)
spring相關 1.依賴注入:容器負責建立物件和維護物件之間的依賴關係,而不是通過物件本身負責自己的建立和解決自己的依賴 2.spring IoC容器(ApplicationContext)負責建立
Spring boot專案整合thymeleaf和shiro
專案使用了spring boot 框架和orm框架用了spring data jpa和前臺是thymeleaf 第一步:先在pom.xml加入thymeleaf和shiro的依賴 <dependency> <groupId>com.