shiro筆記一:權限控制

shiro筆記一:權限控制

  1. 權限控制

權限:用戶和資源,讓指定的用戶,只能操作指定的資源。

  1. javaweb通過doFilter過濾進行處理權限控制。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws Exception {
    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;
    HttpSession session = httpRequest.getSession();
    if (session.getAttribute("username") != null) {
        chain.doFilter(request, response);//如果存在,就繼續該請求。
    } else {//否則就進入login.jsp
        httpResponse.sendRedirect(httpRequest.getContextPath() + "/login.jsp");
    }
}

權限框架設計之ACL和RBAC

  1. ACL:Access Control List訪問控制列表
  • 以前盛行的一種權限設計,它的核心在於用戶直接和權限掛鉤。
  • 優點:簡單易用,開發便捷。
  • 缺點:用戶和權限直接掛鉤,導致在授予時的複雜性,比較分散,不便於管理。
  • 例子:常見的文件系統權限設計,直接給用戶加權限。
  1. RBAC:Role Based Access Control
  • 基於角色的訪問控制系統,權限與角色相關聯,用戶通過成爲適當的角色的成員而得到這些角色的權限。
  • 優點:簡化了用戶與權限的管理,通過對用戶進行分類,使得角色與權限關聯起來。
  • 缺點:開發對比ACL相對複雜。
  • 例子:基於RBAC模型的權限驗證框架與應用Appache shiro,Spring Security
  1. 總結:不能過於複雜,規則過多,維護性和性能下降,更多分類ABAC,PBAC等。

當前主流權限框架

  1. spring Security:

Spring Security是一個能夠爲基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。它提供 了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Inversion of Control ,DI:Dependency Injection 依賴注入)和AOP(面向切面編程)功能,爲應用系統提供聲明式的安全訪問控制功 能,減少了爲企業系統安全控制編寫大量重複代碼的工作。

一句話:Spring Security 的前身是 Acegi Security ,是 Spring 項目組中用來提供安全認證服務的框架

  1. Apache Shiro:

Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理。使用Shiro的易於 理解的API,您可以快速、輕鬆地獲得任何應用程序,從最小的移動應用程序到最大的網絡和企業應用程序。

一句話:Shiro是一個強大易用的Java安全框架,提供了認證、授權、加密和會話管理等功能

  1. 總結

Apache Shiro比Spring Security , 前者使用更簡單

Shiro 功能強大、 簡單、靈活, 不跟任何的框架或者容器綁定,可以獨立運行

Spring Security 對Spring 體系支持比較好,脫離Spring體系則很難開發

SpringSecutiry 支持Oauth鑑權 https://spring.io/projects/spring-security-oauth,Shiro需要自己實現

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