Windows Azure Mobiles Services实现client的登录注冊
下文仅仅是简单实现,client以Android端的实现为例:
用户表Account:
package com.microsoft.ecodrive.model;
public class Account {
@com.google.gson.annotations.SerializedName("id")
public String id;
@com.google.gson.annotations.SerializedName("username")
public String username;
@com.google.gson.annotations.SerializedName("password")
public String password;
@Override
public boolean equals(Object o) {
return o instanceof Account && ((Account) o).id == id;
}
}
一、登录
1、服务端新建api:login,将其script替换例如以下:
exports.post = function(request, response) {
// Use "request.service" to access features of your mobile service, e.g.:
// var tables = request.service.tables;
// var push = request.service.push;
response.send(statusCodes.OK, { message : "post" });
};
exports.get = function(request, response) {
var myTable = request.service.tables.getTable('Account');
myTable.where({
username: request.param('username'),
password:request.param('password')
}).read({
success: checkPermissions
});
function checkPermissions(results) {
if (results.length <= 0) {
response.send(statusCodes.BAD_REQUEST, 'No such user.');
} else {
response.send(statusCodes.OK, { message : 'sucess.' });
}
}
};
2、client登录代码例如以下:
private void login(final String name,final String pwd) {
List<Pair<String, String>> parameters = new ArrayList<Pair<String, String>>();
parameters.add(new Pair<String, String>("username", name));
parameters.add(new Pair<String, String>("password", pwd));
mClient.invokeApi("login","get", parameters, APIResult.class, new ApiOperationCallback<APIResult>() {
@Override
public void onCompleted(APIResult result, Exception exception, ServiceFilterResponse response) {
int code = response.getStatus().getStatusCode();
Log.i(TAG, "StatusCode:"+code);
if (exception == null) {
showToast("Login sucess!");
} else if (code==400) {
showToast("Username or password is wrong, please try again.");
}else{
showToast(exception.getMessage());
}
}
});
}
注:因为是从项目中摘出来的。一些方法须要自己去初始化。
二、注冊
方法一:api方式
1、服务端新建api:register。将其script替换例如以下:
exports.post = function(request, response) {
var myTable = request.service.tables.getTable('Account');
myTable.where({
username: request.param('username')
}).read({
success: checkPermissions
});
function checkPermissions(results) {
if (results.length <= 0) {
var toInsert ={username:request.param('username'),password:request.param('password')};
myTable.insert(toInsert, {
success: function () {
response.send(statusCodes.OK, { message : 'Register sucess!'});
}
});
} else {
console.log('User %s Already exist.', request.param('username'));
response.send(statusCodes.BAD_REQUEST, 'Already exist.');
}
}
};
exports.get = function(request, response) {
response.send(statusCodes.OK, { message : 'Hello World!' });
};
2、client代码例如以下:
//use api
private void register1(final String name,final String pwd) {
List<Pair<String, String>> parameters = new ArrayList<Pair<String, String>>();
parameters.add(new Pair<String, String>("username", name));
parameters.add(new Pair<String, String>("password", pwd)); mClient.invokeApi("register","post", parameters, APIResult.class, new ApiOperationCallback<APIResult>() {
@Override
public void onCompleted(APIResult result, Exception exception, ServiceFilterResponse response) {
int code = response.getStatus().getStatusCode();
Log.i(TAG, "StatusCode:"+code);
if (exception == null) {
//Sucess
showToast(result.message);
} else if (code==400) {
showToast(response.getContent());
}else{
showToast(exception.getMessage());
}
}
});
}
方法二:改动Accout表的insert的script。
1、替换Accout表的insert的script例如以下:
function insert(item, user, request) {
var permissionsTable = tables.getTable('Account');
permissionsTable.where({
username: item.username
}).read({
success: checkPermissions
});
function checkPermissions(results) {
if (results.length <= 0) {
request.execute();
} else {
console.log('User %s Already exist.', item.username);
request.respond(statusCodes.BAD_REQUEST, 'User already exist');
}
}
}
2、client代码例如以下:
//use insert
private void register(final String name,final String pwd) {
Account account = new Account();
account.username = name;
account.password = pwd;
mAccountTable.insert(account,new TableOperationCallback<Account>() {
@Override
public void onCompleted(Account result, Exception exception,
ServiceFilterResponse response) {
int code = response.getStatus().getStatusCode();
Log.i(TAG, "StatusCode:"+code);
if (exception == null) {
//Sucess
showToast("Register sucess!");
} else if (code==400) {
showToast(response.getContent().replace("\"", ""));
}else{
showToast(exception.getMessage());
}
}
});
}
另,APIResult类例如以下:
package com.microsoft.ecodrive.model;
import com.google.gson.annotations.SerializedName;
public class APIResult {
@SerializedName("count")
public int mCount;
public int getCount() {
return mCount;
}
public String message;
}
Windows Azure Mobiles Services实现client的登录注冊的更多相关文章
- How to use VS2012 remote debug Windows Azure Cloud Services
Background: Windows Azure Cloud Services 可以在本地调试,使用Visual Studio 2012 + 模拟器 Emulator.但是模拟器的工作状态和环境和真 ...
- Windows Azure Virtual Machine (25) 使用SSH登录Azure Linux虚拟机
<Windows Azure Platform 系列文章目录> 本文介绍内容适合于Azure Global和Azure China 为什么使用SSH登录Azure Linux虚拟机? 我们 ...
- Windows Azure - App Services
1. 需要了解的概念:App Service Plan, Resource Group 2. Create an ASP.NET web app in Azure App Services 3. Cr ...
- 黑马day07 登录注冊案例(一)
简单介绍:依据三层架构的思想设计本案例. 1.搭建好开发环境 准备好须要的包和模拟数据库配置文件users.xml -->cn.itheima.dao -->cn.itheima.serv ...
- 如何使用新浪微博账户进行应用登录验证(基于Windows Azure Mobile Service 集成登录验证)
使用三方账号登录应用应该对大家来说已经不是什么新鲜事儿了,但是今天为什么还要在这里跟大家聊这个话题呢,原因很简单 Windows Azure Mobiles Service Authenticatio ...
- [Windows Azure] Windows Azure Web Sites, Cloud Services, and VMs: When to use which?
This document provides guidance on how to make an informed decision in choosing between Windows Azur ...
- [转]Windows Azure上安装SharePoint 2013
基于Windows Azure 安装SharePoint 2013 前段时间写的基于Windows Azure安装SharePoint系列,由于Azure的体验账号过期了,所以不得不暂停.今天有幸参加 ...
- 利用 Windows Azure 实现“云优先”
根据 IDC 的调查,云计算无疑为我们的合作伙伴提供了巨大的机会,预计到 2016 年,全球企业将在公共云服务上耗资 980 亿美元.在今天的休斯敦全球合作伙伴大会上,我们非常高兴能与合作伙伴共同寻求 ...
- [Windows Azure] How to use the Queue Storage Service
How to use the Queue Storage Service version 1.7 version 2.0 This guide will show you how to perform ...
随机推荐
- [Functional Programming] Fst & Snd, Code interview question
cons(a, b) constructs a pair, and car(pair) and cdr(pair) returns the first and last element of that ...
- C#.NET常见问题(FAQ)-VS如何整个项目中查找字符串
Ctrl+F打开查找对话框,然后输入查找字符串,电机右边的小三角,选择整个解决方案,就可以遍历所有文件查找指定字符了 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http:// ...
- 如何使用SubtitleWorkshop制作字幕
任意打开一段字幕文件 对于初学者而言还是最好打开一个带有中英字幕的视频文件(字幕是嵌入在视频文件里面的)然后一句一句照着写 先打开视频预览模式 再打开一段视频文件,并新建一个字幕文件 牢记几个快捷键 ...
- Android IO存储总结
1 前言 android设备的存储特点: 分内存和SD卡两种存储设备,且android设备存储空间小,且系统碎片化等情况. SD卡:老版本的android设备 不存在内置SD ...
- Struts2(一)
一.Struts下载地址 http://struts.apache.org/download.cgi 二.导入包.配置Web.xml和struts.xml 在下载的包中从示例中找到一些包就可以 str ...
- J2EE项目集成SAP的BO报表
网上的方案: 每个用户在自己的J2EE系统的用户登陆的同时登陆bo系统,这做法的缺点是登陆bo速度慢,而且如果J2EE用户比较多的话会在bo服务器生成很多的token. 最佳方案(自己研究): 1.调 ...
- 元程序 /如何取test.py中name的值
# -*- coding: utf-8 -*- #python 27 #xiaodeng #Python学习手册 633 #模块是对象:元程序 #因为模块通过内置属性显示了他们的大多数特性,因此很容易 ...
- java 多态的好处
/* 对象的多态性. class 动物{} class 猫 extends 动物{} class 狗 extends 动物{} 猫 x = new 猫(); 动物 x = new 猫();//一个对象 ...
- 国内四大炒股软件APP 全面技术解析
随着人们的焦点逐步由电脑PC端转为手机端之后,国内炒股软件也逐步开始推出手机炒股APP,但是面对如此众多的都以“最牛.最佳”等冠名的APP真的实至名归吗?为了大家不再走弯路,不沉迷智能选股,笔者将近期 ...
- FZU - 2039 Pets (二分图匹配 2011年全国大学生程序设计邀请赛(福州))
Description Are you interested in pets? There is a very famous pets shop in the center of the ACM ci ...