[英]How to make login in Flutter and Prestashop
我在我的顫振項目中使用 Prestashop Web 服務,我可以獲取和發布數據並注冊客戶,但我在登錄時遇到了問題。 Prestashop 中的登錄名需要散列密碼以進行驗證。 我嘗試了許多用於散列的軟件包,例如crypto package ,但沒有任何效果。 這是我的代碼。
// 獲取用戶信息函數獲取密碼
Future<List<Info>> getUserInfo(String email) async {
var url =
'https://www.example.com/api/customers?filter[email]=$email&display=[id,lastname,firstname,passwd]';
List<Info> data = new List();
Response response;
response = await get(url, headers: <String, String>{
'authorization': getAuth(),
});
if (response.statusCode == 200) {
if (response.body.length != 0) {
var raw = XmlDocument.parse(response.body);
var elements = raw.findAllElements("customer");
data.addAll(elements.map((element) {
return Info(
customerID: removeAllHtmlTags(
element.findElements('id').single.text.toString()),
firstName: removeAllHtmlTags(
element.findElements('lastname').single.text.toString()),
lastName: removeAllHtmlTags(
element.findElements('firstname').single.text.toString()),
password: removeAllHtmlTags(
element.findElements('passwd').single.text.toString()),
);
}).toList());
} else {
data = null;
}
}
return data;}
////驗證登錄
Future<String> VerifyLogin({String password, String email}) async {
String result = '';
List<Info> data = await getUserInfo(email);
const cookie_key = '$cookie_key';
final cryptPass = crypto.md5
.convert(utf8.encode(cookie_key + password))
.toString()
.toLowerCase();
if (data != null) {
print(cryptPass);
print(data.first.password);
if (data.first.password == cryptPass) {
final SharedPreferences prefs = await _prefs;
prefs.setString('id', data.first.customerID);
result = 'success';
} else {
result = 'wrong password';
}
} else {
result = 'wrong email';
}
return result;}
在 Prestashop 1.7 中使用 bcrypt。
看到這個答案,它完美地解釋了 Prestashop 如何處理密碼加密/散列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.