A. GitHub 上有哪些值得推薦的開源電子書
語言無關類
操作系統
鳥哥的Linux私房菜 (簡體)
Linux 系統高級編程
The Linux Command Line (中英文版)
Linux 設備驅動 (第三版)
深入分析Linux內核源碼
UNIX TOOLBOX
Docker中文指南
Docker —— 從入門到實踐
FreeRADIUS新手入門
Mac 開發配置手冊
FreeBSD 使用手冊
Linux 命令行(中文版)
一步步搭建物聯網系統
Nginx開發從入門到精通 (淘寶團隊出品)
Git教程 (本文由 @廖雪峰 創作,如果覺得本教程對您有幫助,可以去 iTunes 購買)
git – 簡易指南
猴子都能懂的GIT入門
Git 參考手冊
Pro Git
Git Magic
GotGitHub
Git Community Book 中文版
Mercurial 使用教程
HgInit (中文版)
沉浸式學 Git
Git-Cheat-Sheet (感謝 @flyhigher139 翻譯了中文版)
GitHub秘籍
NoSQL資料庫筆談 (PDF)
Redis 設計與實現
Redis 命令參考
帶有詳細注釋的 Redis 3.0 代碼
帶有詳細注釋的 Redis 2.6 代碼
The Little MongoDB Book
The Little Redis Book
Neo4j 簡體中文手冊 v1.8
Neo4j .rb 中文資源
MySQL索引背後的數據結構及演算法原理
持續集成(第二版) (譯言網)
讓開發自動化系列專欄
追求代碼質量
selenium 中文文檔
Joel談軟體
約耳談軟體(Joel on Software)
關於瀏覽器和網路的 20 項須知
前端知識體系
瀏覽器開發工具的秘密
Chrome 開發者工具中文手冊
Chrome擴展開發文檔
Grunt中文文檔
移動Web前端知識庫
正則表達式30分鍾入門教程
前端開發體系建設日記
移動前端開發收藏夾
JSON風格指南
HTTP 介面設計指北
前端資源分享(一)
前端資源分享(二)
前端代碼規范 及 最佳實踐
w3school教程整理
大數據/數據挖掘/推薦系統/機器學習相關資源
程序員編程藝術
每個程序員都應該了解的內存知識(譯)【第一部分】
取悅的工序:如何理解游戲 (豆瓣閱讀,免費書籍)
OpenWrt智能、自動、透明翻牆路由器教程
awk程序設計語言
C++ 並發編程指南 (@傅海平ICT)
Linux C編程一站式學習 (宋勁杉, 北京亞嵌教育研究中心)
CGDB中文手冊
100個gdb小技巧
100個gcc小技巧
ZMQ 指南
How to Think Like a Computer Scientist (中英文版)
跟我一起寫Makefile(PDF)
GNU make中文手冊
GNU make 指南
Google C++ 風格指南
C/C++ Primer (by @andycai)
簡單易懂的C魔法
Cmake 實踐 (PDF版)
C++ FAQ LITE(中文版)
C++ Primer 5th Answers
學習CSS布局
通用 CSS 筆記、建議與指導
CSS參考手冊
Emmet 文檔
前端代碼規范 (騰訊alloyteam團隊)
Dart 語言導覽
Fortran77和90/95編程入門
實時 Java 系列
Apache Shiro 用戶指南
使用 Eclipse 和 Java SE 6 創建獨立 Web Services 應用程序
第 1 部分: Web Services 服務端應用程序
第 2 部分: Web 服務客戶端應用程序
JavaServer Faces 1.2 入門
第 1 部分: 構建基本應用程序
第 2 部分: JSF 生命周期、轉換、檢驗和階段監聽器
用 Eclipse Europa 進行 Web 開發
第 1 部分: Eclipse Java EE
第 2 部分: PHP 開發工具
第 3 部分: Ruby Development Toolkit 和 RadRails
使用 JavaServer Faces 構建 Apache Geronimo 應用程序
第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 構建基本的應用程序
第 2 部分: 在 JavaServer Faces 中使用 Tomahawk
第 3 部分: 使用 ajax4jsf 添加 Ajax 功能
第 4 部分: 使用 Apache Trinidad 組件擴展 JSF
第 5 部分: 將 JSF 應用程序與 Spring 集成
Apache Geronimo 和 Spring 框架
第 1 部分: 開發方法學
第 2 部分: 構建第一個應用程序
第 3 部分: 集成 DAO 與 ORM
第 4 部分: 混合使用 Spring AOP 和 Spring Web Flow
第 5 部分: Spring MVC
第 6 部分: Spring MVC:使用 Web 視圖技術
終極 mashup —— Web 服務和語義 Web
第 1 部分: 使用與組合 Web 服務
第 2 部分: 管理 Mashup 數據緩存
第 3 部分: 理解 RDF 和 RDFs
第 4 部分: 創建本體
第 5 部分: 切換 Web 服務
Jersey 2.x 用戶指南
MyBatis中文文檔
Google JavaScript 代碼風格指南
Airbnb JavaScript 規范
JavaScript 標准參考教程(alpha)
Javascript編程指南 (源碼)
javascript 的 12 個怪癖
JavaScript 秘密花園
JavaScript核心概念及實踐 (PDF) (此書已由人民郵電出版社出版發行,但作者依然免費提供PDF版本,希望開發者們去購買,支持作者)
《JavaScript 模式》翻譯,此書中文版有售,但是紙質書翻譯的還沒有這個版本翻譯的好
命名函數表達式探秘 (注:原文由為之漫筆翻譯,原始地址無法打開,所以此處地址為我博客上的備份)
學用 JavaScript 設計模式 (開源中國)
深入理解JavaScript系列
ECMAScript 6 入門 (作者:阮一峰)
jQuery
jQuery 解構
簡單易懂的JQuery魔法
How to write jQuery plugin
Node.js
Node入門
七天學會NodeJS
Nodejs Wiki Book (繁體中文)
express.js 中文文檔
koa 中文文檔
使用 Express + MongoDB 搭建多人博客
Express框架
nodejs文檔
Node.js 包教不包會
Learn You The Node.js For Much Win! (中文版)
Node debug 三法三例
underscore.js
Underscore.js中文文檔
backbone.js
backbone.js入門教程 (PDF)
Backbone.js入門教程第二版
Developing Backbone.js Applications(中文版)
AngularJS
AngularJS最佳實踐和風格指南
AngularJS中譯本
AngularJS入門教程
構建自己的AngularJS
在Windows環境下用Yeoman構建AngularJS項目
zepto 簡明中文手冊
Sea.js
Hello Sea.js
CoffeeScript
CoffeeScript Cookbook
The Little Book on CoffeeScript中文版
ExtJS
Ext4.1.0 中文文檔
Chrome擴展及應用開發
JavaScript入門教程
PHP調試技術手冊(PDF)
XDebug 2中文手冊(譯) (CHM)
PHP之道
PHP 最佳實踐
PHP安全最佳實踐
深入理解PHP內核
PHP擴展開發及內核應用
CodeIgniter 用戶指南
Laravel4 中文文檔
Laravel 入門
Symfony2中文文檔 (未譯完)
Phalcon中文文檔(翻譯進行中)
YiiBook幾本Yii框架的在線教程
簡單易懂的PHP魔法
swoole文檔及入門教程
iOS開發60分鍾入門
iOS7人機界面指南
Google Objective-C Style Guide 中文版
iPhone 6 屏幕揭秘
Apple Watch開發初探
馬上著手開發 iOS 應用程序
網易斯坦福大學公開課:iOS 7應用開發字幕文件
Android Design(中文版)
Google Android官方培訓課程中文版
Android學習之路
小白的Python教程
簡明Python教程
零基礎學Python
Python 2.7 官方教程中文版
Python 3.3 官方教程中文版
深入 Python 3
PEP8 Python代碼風格規范
Google Python 風格指南 中文版
Python入門教程 (PDF)
Python的神奇方法指南
笨辦法學 Python (PDF版下載)
Django 文檔中文版
Django 最佳實踐
The Django Book 中文版
web.py 0.3 新手指南
Web.py Cookbook 簡體中文版
Dive Into Python 中文版
Bottle 文檔中文版 (需翻牆)
Flask 文檔中文版
Jinja2 文檔中文版
Werkzeug 文檔中文版
Flask之旅
Introction to Tornado 中文翻譯
Python自然語言處理中文版 (感謝陳濤同學的翻譯,也謝謝 @shwley 聯系了作者)
Python 繪圖庫 matplotlib 官方指南中文翻譯
Scrapy 0.25 文檔
ThinkPython
Ruby 風格指南
Rails 風格指南
笨方法學 Ruby
Ruby on Rails 指南
Ruby on Rails 實戰聖經
Ruby on Rails Tutorial 原書第 2 版 (本書網頁版免費提供,電子版以 PDF、EPub 和 Mobi 格式提供購買,僅售 9.9 美元)
編寫Ruby的C拓展
Ruby 源碼解讀
Shell腳本編程30分鍾入門
Go編程基礎
Go入門指南
學習Go語言 (PDF)
Go Web 編程 (此書已經出版,希望開發者們去購買,支持作者的創作)
Go實戰開發 (當我收錄此項目時,作者已經寫完第三章,如果讀完前面章節覺得有幫助,可以給作者捐贈,以鼓勵作者的繼續創作)
Network programming with Go 中文翻譯版本
實戰 Groovy 系列
一份其實很短的 LaTeX 入門文檔
一份不太簡短的 LATEX 2ε 介紹 (PDF版)
ANSI Common Lisp 中文翻譯版
Lua編程入門
Real World Haskell 中文版
R語言忍者秘笈
Scala課堂 (Twitter的Scala中文教程)
Effective Scala(Twitter的Scala最佳實踐的中文翻譯)
Scala指南
The Swift Programming Language 中文版
Modern Perl 中文版
Perl 程序員應該知道的事
笨辦法學Prolog
Vim中文文檔
笨方法學Vimscript 中譯本
Vim中文文檔
編譯原理(紫龍書)中文第2版習題答案
把《編程珠璣》讀薄
Effective C++讀書筆記
Golang 學習筆記、Python 學習筆記、C 學習筆記 (PDF)
Jsoup 學習筆記
學習筆記: Vim、Python、memcached
圖靈開放書翻譯計劃–C++、Python、Java等
蒂姆·奧萊利隨筆 (由譯言網翻譯,電子版免費)
Octave 入門 (PDF版)
SICP 解題集
精彩博客集合
正則表達式簡明參考
B. Shiro+SessionId構建token鑒權體系
隨著社會的發展,現在前端展示的方式多樣,由原本網頁單一形式,到現在的網頁、小程序、Android、IOS等多元化模式。由於前端展示的多元化,原有採用session有狀態的認證方式已經無法滿足需求,所以需要調整後台的技術框架,讓系統能滿足有狀態認證和無狀態token認證並存。
後台的管理系統是採用碼雲上開源的renren-security系統,該系統採用的認證框架是Shiro。考慮系統採用原本的許可權控制採用Session方式,整體風險大且時間周期長,所以整合考慮採用SessionId作為token的方式,進行無狀態的token認證方式。
登錄時,POST用戶名與密碼到/login進行登入,如果成功返回一個會話ID,以會話ID作為token,失敗的話直接返回401錯誤。之後用戶訪問每一個需要許可權的網址請求必須在header中添加Authorization欄位,例如Authorization: token,token為密鑰。後台會進行token的校驗,如果有誤會直接返回401。
在login方法驗證通過後,以SessionId作為token,通過json返回客戶端。
重寫Sessionmanager的getSessionId方法,獲取token作為SessionId,同時修改request的「REFERENCED_SESSION_ID」為token,因為token為驗證通過的sessionId,所以此request也會採用驗證通過的Session進行獲取驗證和許可權。
新建一個Maven工程,添加相關的依賴。
編寫認證方法和授權方法。
重寫繼承DefaultWebSessionManager的SessionManager,修改getSessionId方法,通過獲取的token作為SessionId。
配置Realm和SessionManager,還有關於路徑的攔截等配置。
整體配置可以參考: https://blog.csdn.net/qq_34996727/article/details/81133729
SessionManager可以參考: https://blog.csdn.net/u011456867/article/details/80484559