JFinal整合Shiro(一)

原文: http://zhangxiao.org/2016/jfinal-shiro-integration1/

Apache Shiro是Java的一個安全框架,也是我第一個使用的Java安全框架。在個人入門級開源項目JFinal-Paladin中,我進行了一些實踐,整體感受仍是很是棒的,該考慮到的都感受已經考慮到。對比以前所接觸過的php框架裏面安全模塊,感受只有過之而無不及。我的體驗而已,有意見的朋友請噴?。
本文主要來說述下在JFianl中集成Shiro過程當中的經驗和想法。php

入門必看

英文好的能夠直接看官網教程,英文很差的能夠看下開濤的博客《跟我學Shiro》系列html

在看教程以前,最好了解想一些shiro的概念:Apache Shiro Terminologygit

本身入門時踩的坑

一開始的時候,我本身搞了一個JFinal的全局Interceptor ,用來作Shiro 的權限判斷。緣由是一開始不瞭解Shiro,不知道運用Shiro Filter,理所固然地從JFinal的層面進行思考。github

固然,在JFinal Interceptor 中也是能夠作一些權限的判斷的,不過順序上面先要通過ShiroFilter,而後纔會到JFinalFilter,真正進入JFinalweb

現成方案

能夠直接拿來用,能夠作參考,我在實踐的時候,也參考了很多apache

JFinalShiroPlugin

項目地址:http://git.oschina.net/myaniu...segmentfault

JFinal_Authority

項目地址:http://git.oschina.net/jayqqa...php框架

Dreampie/jfinal-shiro

項目地址:https://github.com/Dreampie/j...安全

現成方案之我的感覺

部分現成方案中使用了Plugin、Interceptor、Annotation的方式來集成Shrio,我的不是很是喜歡,我的感受有2個痛點:框架

一、須要好多代碼去實現Plugin、Interceptor、Annotation,雖然別人寫好了,可是你仍是得去了解源碼,萬一有個坑呢:),畢竟不是什麼大而成熟且運用普遍的解決方案

二、你項目裏有這麼多代碼,想一想一下

  • 某一天你想知道哪一個Controller或Action裏面加了Shiro鑑權,哪些沒有加
  • 某一天你想知道各個加了Shrio鑑權的Controller或Action所對應的權限表達式是什麼
  • 某一天你想知道加一個權限判斷,或去掉一個

你得去找,去改,從新編譯,從新部署。無論你瘋不瘋,反正我感受我會瘋的。

個人選擇

既然Shiro是專業的那就讓它作好該作的。

  1. 在shiro.ini裏面,配置自定義Realm+自定義filters+url表達式,來實現自定義的驗證方式
  2. 用web來配置:資源、角色、用戶、權限

待續...
下一篇中我將會整理具體的實現步驟:《JFianl整合Shiro(二)》

相關文章
相關標籤/搜索