Windows Azure Mobiles Services实现客户端的登录注册

下文只是简单实现,客户端以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, 'Not such user.');
        } else {
            response.send(statusCodes.OK, { message : 'sucess.' });
        }
    }
};

2、客户端登录代码如下:

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、客户端代码如下:

	//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、客户端代码如下:

//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实现客户端的登录注册

时间: 2024-10-13 08:23:09

Windows Azure Mobiles Services实现客户端的登录注册的相关文章

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

创建Windows Azure网站,使用FTP客户端在网站中添加页面

创建Windows Azure网站 创建web site非常简单,直接上图 FTP的用户名,千万不要搞错了是网站名称\用户名,这样的格式 你可以从截图中看到我添加test.asp作为新的默认页面. azure网站支持php5.3/5.4/5.5, 也支持java 创建Windows Azure网站,使用FTP客户端在网站中添加页面,布布扣,bubuko.com

Windows Server2008R2,ServerWin2012 R2设置自动登录注册表配置

serverWin2008 R2 2012自动登录一般是通过control userpasswords2 命令修改,其实注册表修改更简单. 复制以下保存为xx.reg文件导入即可即可. Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "AutoAdminLogon"="1" "Def

Windows Azure Virtual Machine (34) 保护Azure虚拟机

<Windows Azure Platform 系列文章目录> 请注意:我们在Azure上创建的虚拟机,都是可以通过公网IP地址来访问的.(直接通过虚拟机的IP地址:PIP,或者通过负载均衡器的IP地址:VIP) 但是总会有不怀好意的黑客,会攻击这些虚拟机.所以保护Azure虚拟机是非常重要的. 如果是Linux虚拟机,笔者强烈建议使用SSH Key的方式来访问Azure Linux虚拟机,同时需要保护要Key和私钥 Windows Azure Virtual Machine (25) 使用S

[转]Windows Azure上安装SharePoint 2013

基于Windows Azure 安装SharePoint 2013 前段时间写的基于Windows Azure安装SharePoint系列,由于Azure的体验账号过期了,所以不得不暂停.今天有幸参加Windwos Azure的活动,并得到了试用账号.所以今天将继续之前的文章,记录一下如何基于Windows Azure安装SharePoint 2013. 实验将完成以下步骤: · 在Windows Azure中创建地缘组 · 在Windows Azure中创建存储账户 · 在Windows Az

云平台发展前沿报告 微软云平台——Windows Azure

微软云平台——Windows Azure Windows Azure 是微软研发的公有云计算平台.该平台可供企业在互联网上运行应用,并可进行扩展.通过Windows Azure,企业能够在多个数据中心快速开发.部署.管理应用程序 .Windows Azure 提供了企业级服务等级协议(SLA)保证,并且可以轻松在位于不同城市的数据中心实现万无一失的异地多点备份,为企业应用提供了可靠的保障. Windows Azure服务平台包含如下功能:网站.虚拟机.云服务.移动应用服务.大数据支持以及媒体功能

Windows Azure SSTP模式VPN Client使用AD域用户验证登录

我们上面一篇文章介绍了,如何在windows azure下搭建SSTP模式的vpn服务,搭建配置后我们遗留了一个,什么问题呢,我们都知道,一般的独立vpn是使用独立的账户及密码的,尤其是托管到外面的vpn服务器,无法使用AD域用户验证.这样会造成vpn用户拥有两套用户及密码,管理起来很不方便.再说说我的环境,我的环境是把vpn服务器放在了windows azure上,这样算来也是托管类型的,但是windows azure毕竟是微软出的,AD也是微软的,在设计上肯定考虑了,最终呢托管到window

Windows Azure在iPhone上的管理客户端推荐(国际版和国内版通吃)

根据NIST定义的云计算五大标准,按需付费(英文叫Pay As You Go)是一个很重要的标准定义,说得通俗点叫用多少算多少. 我本人在使用Windows Azure虚机功能的初期阶段,也就是大概在2012年中旬的时候,经常犯的一个错误是忘记掉关闭虚拟机.这其实也是我们多年使用虚机的习惯,在公司内部的虚机哪能关啊:即使是用来测试的虚机,其生命周期也大多是新建-调试-删除,很少有关机这个动作,生产环境用的虚机更不用说了. 所以直接导致的结果是每个月150美金的Credit很快就花完了,有的时候想

登录windows azure及管理门户介绍

输入azure中国官方网址:www.azure.cn,打开"管理门户". 输入azure账户,密码 登录界面是不是挺炫的 登录成功后,首先看到的是windows azure所有项目的概览界面 左侧的导航栏是不同服务的分类,点击相应的分类,可以进入不同的服务界面.进入服务界面后右侧的控制台可以对该项服务进行不同的操作 点击账户信息,可以对账户进行注销,更改密码,及查看帐单情况 windows azure登录及管理界面给我的感觉就是界面简单,可操作性强,所有功能一目了然.