如果您正在使用LAMBDA
- ,發送您的用戶名和密碼,讓拉姆達從DynamoDB拉行和做
does the user exist, if so do the passwords match
的檢查應該是這個樣子在LAMBDA:
const
AWS = require('aws-sdk'),
ddb = new AWS.DynamoDB()
exports.handler = function(event, context) {
var params = {
TableName : '<users>',
KeyConditionExpression : 'userType = :v_type AND username = :v_user',
FilterExpression : 'password = :v_pass',
ExpressionAttributeValues : {
':v_type' : { S : '<superdooper>' },
':v_user' : { S : event.username },
':v_pass' : { S : event.password }
}
//ProjectionExpression: 'email, joinDate, phone' (OPTIONAL)
}
ddb.query (params, function(err, data) {
if (err) {
context.fail (JSON.stringify(err, null, 2));
} else {
if (data.Count !== 0)
context.succeed (data.Items);
else
context.succeed ('Wrong Info');
}
});
};
一旦你的data.Items回在Xcode中,調用這個lambda函數,發送您的變量,當他們說 「好」,稱:
credentialsProvider.setLogins({developerAuthenticationProvider.getProviderName(), developerUserIdentifier});
其次credentialsProvider.refresh();
上面這部分應該是從MobileHub Xcode項目。
現在,這是事情變得怪異。有很多方法可以做到這一點。 TVM,Cognito假設驗證,服務器端等
我總是重新擔負認證從Unauthenticated
到Authenticated
,但你必須做大量的後端的東西,如果你想從兩個網頁端和移動端是否得到真正的分析你正在爲這兩個。但是,一旦您擁有通過身份驗證的用戶,您現在就擁有一名認證良好的用戶,隨時可以訪問您在步驟6中列出的任何身份驗證!
希望這會有所幫助。
更新---這是一個骯髒,不安全,但快速的方式來做到這一點。不適用於生產。
在認知中,甚至沒有製作一個Authenticated user role
。給你Unauthenticated user role
所有權限做的一切(DynamoDBFullAccess
,S3FullAccess
,EC2FullAccess
等)
然後在手機上處理您的驗證 - 檢查對DynamoDB的用戶名和密碼,然後如果返回的信息,一個變量設置爲TRUE
。這是不是安全的,因爲現在用戶可以訪問所有的東西,但它應該是這樣的:
BOOL loggedIn = FALSE;
if (loggedIn) {
[self loadView];
} else {
[self loadLoginView];
}
- (void) loadLoginView {
DynamoDBCall (username, password) withCompletion() {
if (allGood) {
_loggedIn = TRUE;
}
}
}
這是相當廣泛,但希望的答案幫助 - 問題應該更專注於你確切的問題有。不是「我該如何做到這一點」 - 更多「爲什麼這個代碼不起作用」 – iSkore