關(guān)于nancy中的身份驗(yàn)證
在nancy中,身份驗(yàn)證分為basic ,form ,token,stateless幾種,basic和form這里不說了,其中如果是使用cookie來保存身份的, 需要注意的是:cookie有大小的限制,所以不能用來保存超過4k的信息,而且有一些js插件也要用的cookie,雖然html5好像多了。但是還是要注意一下。因?yàn)橹翱吹轿恼掠械娜司W(wǎng)站有時(shí)候登陸出現(xiàn)問題,就是因?yàn)橛脩粜畔⑻髮?dǎo)致的。
這里說的是token的驗(yàn)證。
ITokenizer
這個(gè)是定義token的接口,Tokenizer是它的一個(gè)實(shí)現(xiàn),你可以自己實(shí)現(xiàn),比如過期,加密等。
ITokenKeyStore
這是服務(wù)器保存登陸用戶身份信息的庫。 private ITokenKeyStore keyStore = new FileSystemTokenKeyStore(); 這行代碼意思是使用文件的方式來保存用戶信息。而InMemoryTokenKeyStore 在內(nèi)存中保存用戶信息。你可以使用自己的方式來保存用戶的登陸信息,只要實(shí)現(xiàn)ITokenKeyStore 。
過期時(shí)間
private Func tokenExpiration = () => TimeSpan.FromDays(1); private Func keyExpiration = () => TimeSpan.FromDays(7);
這是默認(rèn)的過期時(shí)間
身份信息
登陸后,一般會(huì)返回一個(gè)json格式的信息 其中有token的鍵值
token的傳遞
獲取到token后,如果你把它保存到cookie,然后發(fā)送出去,就和stateless差不多。怎么傳遞呢?nancy是用在信息頭里添加的方式,就是在Header里加入名為Authorization的字段這是測試實(shí)例中的代碼 with.Header("Authorization", "Token " + token); 用jquery的ajax調(diào)用,也可以添加,請自行搜索。看到上面的代碼,需要注意的是要在傳遞token的值前加上字符串"token",我就是直接把token的值傳了過去,怎么也不好使。
TokenAuthentication.cs文件中的 var authorization = request.Headers.Authorization;這句就是用來服務(wù)器讀取authorization信息的。
var apiKey = (string) nancyContext.Request.Query.ApiKey.Value;而stateless是用Request.Query來傳遞的,apikey是根據(jù)guid生成的,貌似沒有token復(fù)雜
以上都是官網(wǎng)的代碼中的方法和方式。
相關(guān)文章
C#解析json字符串總是多出雙引號(hào)的原因分析及解決辦法
json好久沒用了,今天在用到j(luò)son的時(shí)候,發(fā)現(xiàn)對字符串做解析的時(shí)候總是多出雙引號(hào),下面給大家介紹C#解析json字符串總是多出雙引號(hào)的原因分析及解決辦法,需要的朋友參考下吧2016-03-03C#控件picturebox實(shí)現(xiàn)畫圖功能
這篇文章主要為大家詳細(xì)介紹了C#控件picturebox實(shí)現(xiàn)畫圖功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09基于C#實(shí)現(xiàn)電腦系統(tǒng)掛機(jī)鎖
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)電腦系統(tǒng)掛機(jī)鎖,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12