程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 關於nancy中的身份驗證

關於nancy中的身份驗證

編輯:關於C#
 

在nancy中,身份驗證分為basic ,form ,token,stateless幾種,basic和form這裡不說了,其中如果是使用cookie來保存身份的, 需要注意的是:cookie有大小的限制,所以不能用來保存超過4k的信息,而且有一些js插件也要用的cookie,雖然html5好像多了。但是還是要注意一下。因為之前看到文章有的人網站有時候登陸出現問題,就是因為用戶信息太大導致的。

這裡說的是token的驗證。

ITokenizer

這個是定義token的接口,Tokenizer是它的一個實現,你可以自己實現,比如過期,加密等。

ITokenKeyStore

這是服務器保存登陸用戶身份信息的庫。 private ITokenKeyStore keyStore = new FileSystemTokenKeyStore(); 這行代碼意思是使用文件的方式來保存用戶信息。而InMemoryTokenKeyStore 在內存中保存用戶信息。你可以使用自己的方式來保存用戶的登陸信息,只要實現ITokenKeyStore 。

過期時間

private Func tokenExpiration = () => TimeSpan.FromDays(1); private Func keyExpiration = () => TimeSpan.FromDays(7);

這是默認的過期時間

身份信息

登陸後,一般會返回一個json格式的信息 其中有token的鍵值

token的傳遞

獲取到token後,如果你把它保存到cookie,然後發送出去,就和stateless差不多。怎麼傳遞呢?nancy是用在信息頭裡添加的方式,就是在Header裡加入名為Authorization的字段這是測試實例中的代碼 with.Header("Authorization", "Token " + token); 用jquery的ajax調用,也可以添加,請自行搜索。看到上面的代碼,需要注意的是要在傳遞token的值前加上字符串"token",我就是直接把token的值傳了過去,怎麼也不好使。

TokenAuthentication.cs文件中的 var authorization = request.Headers.Authorization;這句就是用來服務器讀取authorization信息的。

var apiKey = (string) nancyContext.Request.Query.ApiKey.Value;而stateless是用Request.Query來傳遞的,apikey是根據guid生成的,貌似沒有token復雜

以上都是官網的代碼中的方法和方式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved