BmobUser除了從BmobObject繼承的屬性外,還有幾個特定的屬性:git
BmobUser自動處理用戶帳戶管理所需的功能。github
-(void)setUsername:(NSString *)username;//用戶名,必需
-(void)setPassword:(NSString*)password;//密碼,必需
-(void)setEmail:(NSString *)email;//設置郵箱
-(void)setObject:(id)obj forKey:(id)key;//設置某個屬性的值
-(id)objectForKey:(id)key;//獲得某個屬性的值
複製代碼
應用很常見的一個功能就是,註冊用戶,使用BmobUser註冊用戶也不復雜,以下的例子所示:後端
BmobUser *bUser = [[BmobUser alloc] init];
[bUser setUsername:self.nameTextField.text];
[bUser setPassword:self.passwordTextField.text];
[bUser signUpInBackgroundWithBlock:^ (BOOL isSuccessful, NSError *error){
if (isSuccessful){
NSLog(@"Sign up successfully");
NSString *result = [NSString stringWithFormat:@"註冊成功\n用戶名:%@\n密碼:%@\n去試試登陸吧",self.nameTextField.text,self.passwordTextField.text];
[self showResultInfo:result];
} else {
NSLog(@"%@",error);
[self showResultInfo:@"註冊失敗,查看控制檯信息"];
}
}];
複製代碼
注意點:緩存
有些時候你可能須要在用戶註冊時發送一封郵件,以確認用戶郵箱的真實性。這時,你只須要登陸本身的應用管理後臺,在應用設置->郵件設置(下圖)中把「郵箱驗證」功能打開,Bmob雲後端就會在用戶註冊時自動發動一封驗證給用戶。 安全
username字段是大小寫敏感的字段,若是你但願應用的用戶名不區分大小寫,請在註冊和登陸時進行大小寫的統一轉換。spa
當用戶註冊成功後,須要讓他們之後可以登陸到他們的帳戶使用應用。要作到這點可使用 方法一
code
[BmobUser loginWithUsernameInBackground:self.nameTextField.text password:self.passwordTextField.text];
複製代碼
方法二
orm
[BmobUser loginWithUsernameInBackground:self.nameTextField.text password:self.passwordTextField.text block:^(BmobUser *user, NSError *error) {
if (user) {
NSString *result = [NSString stringWithFormat:@"登陸成功\n用戶名:%@\n密碼:%@\n去試試獲取當前用戶吧",user.username,user.password];
[self showResultInfo:result];
}else{
NSLog(@"%@",error);
[self showResultInfo:@"登陸失敗,查看可控制檯消息"];
}
}];
複製代碼
能夠看到Bmob裏面提供了不少的方法,根據須要調用cdn
每次你登陸成功,都會在本地磁盤中有一個緩存的用戶對象做爲當前用戶,能夠獲取這個緩存的用戶對象來進行登陸:對象
BmobUser *user = [BmobUser currentUser];
if (user) {
//進行操做
NSString *result = [NSString stringWithFormat:@"登陸成功\n用戶名:%@\n密碼:%@\n去試試更新用戶吧",user.username,user.password];
[self showResultInfo:result];
}else{
//對象爲空時,可打開用戶註冊界面
[self showResultInfo:@"當前沒有用戶"];
}
複製代碼
固然,你也能夠用以下的方法清除緩存用戶對象:
[BmobUser logout];
複製代碼
當用戶登陸成功後,在本地有個緩存的用戶對象,若是開發者但願更改當前用戶的某個屬性可按以下代碼操做:
BmobUser *bUser = [BmobUser currentUser];
if (bUser) {
[bUser setObject:self.nameTextField.text forKey:@"username"];
[bUser updateInBackgroundWithResultBlock:^(BOOL isSuccessful, NSError *error) {
if (isSuccessful) {
[self showResultInfo:@"更新用戶成功,去查看當前用戶信息吧"];
}else{
NSLog(@"error %@",[error description]);
[self showResultInfo:@"更新用戶失敗,控制檯查看信息"];
}
}];
}else{
[self showResultInfo:@"當前未登陸"];
}
複製代碼
通常來講,使用當前用戶對象來進行資料更新可能會遇到一個問題。若是當前用戶上次登陸的時間距離當前時間過長,存放在本地的Token就有可能會過時,致使用戶更新資料失敗,這是須要從新登陸,登陸成功後才能更新資料。
在更新用戶信息時,若是用戶郵箱有變動而且在管理後臺打開了郵箱驗證選項的話,Bmob雲後端一樣會自動發動一封郵件驗證信息給用戶。
查詢用戶和查詢普通對象同樣,只需指定BmobUser類便可,以下:
BmobQuery *query = [BmobUser query];
[query whereKey:@"username" equalTo:self.nameTextField.text];
[query findObjectsInBackgroundWithBlock:^(NSArray *array, NSError *error) {
if (error) {
NSLog(@"%@",error);
[self showResultInfo:@"查詢出錯,查看控制檯信息"];
}else{
if (array.count>0) {
for (BmobUser *user in array) { // demo中只有一個用戶,因此把顯示結果的放在循環內了
NSLog(@"objectid %@",user.objectId);
NSString *result = [NSString stringWithFormat:@"查詢成功\n用戶名:%@\n用戶id:%@",user.username,user.objectId];
[self showResultInfo:result];
}
}else{
[self showResultInfo:@"沒有查詢到結果,請修改信息後查詢"];
}
}
}];
複製代碼
在Bmob後臺查看用戶表
使用舊密碼來重置新密碼的接口,示例以下: 修改
BmobUser *user = [BmobUser currentUser];
[user updateCurrentUserPasswordWithOldPassword:self.nameTextField.text newPassword:self.passwordTextField.text block:^(BOOL isSuccessful, NSError *error) {
if (isSuccessful) {
[self showResultWithLoginInfo:user.username];
} else {
NSLog(@"change password error:%@",error);
[self showResultInfo:@"修改失敗,查看可控制檯消息"];
}
}];
複製代碼
修改爲功以後登陸
//用新密碼登陸
[BmobUser loginInbackgroundWithAccount:result andPassword:self.passwordTextField.text block:^(BmobUser *user, NSError *error) {
if (error) {
NSLog(@"login error:%@",error);
[self showResultInfo:@"登陸失敗,查看可控制檯消息"];
} else {
NSLog(@"user:%@",user);
NSString *result = [NSString stringWithFormat:@"登陸成功\n用戶名:%@\n用戶ID:%@\n",user.username,user.objectId];
[self showResultInfo:result];
}
}];
複製代碼
前提是在註冊操做的時候有添加過郵箱
一旦你引入了一個密碼系統,那麼確定會有用戶忘記密碼的狀況。對於這種狀況,咱們提供了一種方法,讓用戶安全地重置起密碼。
重置密碼的流程很簡單,開發者只須要求用戶輸入註冊的電子郵件地址便可
[BmobUser requestPasswordResetInBackgroundWithEmail:self.nameTextField.text block:^(BOOL isSuccessful, NSError *error) {
if (isSuccessful) {
[self showResultInfo:@"發送成功,請去郵箱內查看郵件"];
}else{
NSLog(@"%@",error);
[self showResultInfo:@"發送失敗,請查看控制檯信息"];
}
}];
複製代碼
如下爲未開啓郵箱驗證和註冊時未綁定郵箱的
密碼重置流程以下:
- 須要在Bmob後臺開啓郵箱認證
- Bmob後臺User表裏可添加字段來完善用戶信息
- 經過郵箱操做密碼等信息的須要在註冊是要求用戶驗證郵箱,不然操做失敗
Bmob接入具體操做可查看上一篇文章 iOS獨立開發者使用Bmob第三方後臺服務初探 本文同步至我的博客 代碼傳送門,歡迎star,感興趣的能夠留言一塊兒探討。 搜索公衆號JacerooChu
或掃描下方二維碼一塊兒討論和獲取更多信息。