本地生成七牛token

2021-07-31 22:20:11 字數 1730 閱讀 5654

由於某些原因 有時候需要本地生成token

原文 位址

首先我們需要用到三個引數scopeaccesskeysecretkey

scope其實就是資源存放的資料夾名字,例如下圖的cmxj

accesskeysecretkey在個人面板 -> 個人中心 -> 金鑰管理裡面就能看到

接下來就可以建立token了,首先我們將上傳策略中的scopedeadline序列化成json格式,裡面的livetime則是token的有效時間,可以以天為單位 

nsmutabledictionary *authinfo = [nsmutabledictionary dictionary];

[authinfo setobject:self.scope forkey:@"scope"];

[authinfo

setobject:[nsnumber numberwithlong:[[nsdate date] timeintervalsince1970] + self.livetime * 24 * 3600]

forkey:@"deadline"];

nsdata *jsondata =

[nsjsonserialization datawithjsonobject:authinfo options:nsjsonwritingprettyprinted error:nil];

再對json序列化後的上傳策略進行url安全的base64編碼

nsstring *encodedstring = [self urlsafebase64encode:jsondata];
qn_gtm_base64是七牛sdk提供給使用者用來處理base64和websafebase64編碼的類,然後將裡面的+/替換成_

- (nsstring *)urlsafebase64encode:(nsdata *)text
然後用secretkey對編碼後的上傳策略進行hmac-sha1加密,並且做安全的base64編碼,得到encoded_signed

nsstring *encodedsignedstring = [self hmacsha1:self.secretkey text:encodedstring];

- (nsstring *)hmacsha1:(nsstring *)key text:(nsstring *)text
最後將accesskey、encodedsignedstring和encodedstring拼接,中間用:分開,得到的就是上傳的token

nsstring *token =

[nsstring stringwithformat:@"%@:%@:%@", self.accesskey, encodedsignedstring, encodedstring];

七牛雲獲取token介面

1.七牛雲上傳原理 2.七牛雲獲取token介面 class qntokenview apiview def get self,request from qiniu import auth 需要填寫你的 access key 和 secret key access key zuso05gqft9a4...

什麼是token及怎樣生成token

token是服務端生成的一串字串,以作客戶端進行請求的令牌,當第一次登陸後,伺服器生成乙個token便將此token返回給客戶端,以後客戶端只要帶上這個token前來請求資料即可,無需再次帶上使用者名稱和密碼 基於token的身份驗證 token的優勢 1.無狀態.可擴充套件 在客戶端儲存的toke...

token 的生成雜談

很多時候我們需要用 token 來作為一些標識,比如 乙個使用者登入後的認證標識.v 1 自己定義的 需要hash 的value 值 key mt rand 這裡用 隨機串作為key hash md5 key v mt rand time echo hash 執行結果 b63426a38f86b72...