一.前言

  權(quán)限驗(yàn)證在開發(fā)中是經(jīng)常遇到的,通常也是封裝好的模塊,如果我們是使用者,通常指需要一個(gè)標(biāo)記特性或者配置一下就可以完成,但實(shí)際里面還是有許多東西值得我們?nèi)ヌ骄?。有時(shí)候我們也會(huì)用一些開源的權(quán)限驗(yàn)證框架,不過能自己實(shí)現(xiàn)一遍就更好,自己開發(fā)的東西成就感(逼格)會(huì)更高一些。進(jìn)入主題,本篇主要是介紹接口端的權(quán)限驗(yàn)證,這個(gè)部分每個(gè)項(xiàng)目都會(huì)用到,所以最好就是也把它插件化,放在Common中,新的項(xiàng)目就可以直接使用了?;趙eb的驗(yàn)證之前也寫過這篇,有興趣的看一下ASP.NET MVC Form驗(yàn)證。

二.簡介

  對于我們系統(tǒng)來說,提供給外部訪問的方式有多種,例如通過網(wǎng)頁訪問,通過接口訪問等。對于不同的操作,訪問的權(quán)限也不同,如:

      1. 可直接訪問。對于一些獲取數(shù)據(jù)操作不影響系統(tǒng)正常運(yùn)行的和數(shù)據(jù)的,多余的驗(yàn)證是沒有必要的,這個(gè)時(shí)候可以直接訪問,例如獲取當(dāng)天的天氣預(yù)報(bào)信息,獲取網(wǎng)站的統(tǒng)計(jì)信息等。

      2. 基于表單的web驗(yàn)證。對于網(wǎng)站來說,有些網(wǎng)頁需要我們登錄才可以操作,http請求是無狀態(tài),用戶每次操作都登錄一遍也是不可能的,這個(gè)時(shí)候就需要將用戶的登錄狀態(tài)記錄在某個(gè)地方?;诒韱蔚尿?yàn)證通常是把登錄信息記錄在Cookie中,Cookie每次會(huì)隨請求發(fā)送到服務(wù)端,以此來進(jìn)行驗(yàn)證。例如博客園,會(huì)把登錄信息記錄在一個(gè)名稱為.CNBlogsCookie的Cookie中(F12可去掉cookie觀察效果),這是一個(gè)