|
本帖最后由 负暄 于 2016-7-12 22:23 编辑
各位坛友,关于用户登录,几乎每个应用都会用到,重要性不言而喻。官方也提供了相关的例程,但我认为这个基于baasdata的例子实现得太简单,后台除了检查用户表记录,如果还想做点什么其它处理,不好扩充,因此我在baas端编写了一个myLogin服务,主要实现了一下两个动作:
1、接收前端传来的参数,在检查用户合法性之后,改写用户表中的最后登录时间。这一点实现了update的能力,只是个实例。大家可以进行修改,做一些自己想做的扩充动作;
2、在向前端返回登录结果时,除了返回用户信息,还返回了一个登录状态编码。这一点同样是个实例,大家也可以对返回结果做出自己的扩充。
在本实现中,参考了大神长春Masion的的帖子,
http://bbs.wex5.com/forum.php?mo ... ht=prepareStatement
受益匪浅,在此表示感谢。
下面就是具体的实现代码,首先是baas服务代码:
public static JSONObject myLogin(JSONObject params, ActionContext context) throws SQLException, NamingException {
String DATASOURCE = "your datasource name"; //这里的your datasource name,改成自己的datasource
Connection conn = context.getConnection(DATASOURCE);
// 获取参数
Object columns = params.get("columns");
Integer limit = params.getInteger("limit");
Integer offset = params.getInteger("offset");
String fPhoneNumber = params.getString("fPhoneNumber");//手机号
String fPassword = params.getString("fPassword");//密码,这参数大家也可以修改,只要前后端对应就行。
List<Object> sqlParams = new ArrayList<Object>();
sqlParams.add(fPhoneNumber);
sqlParams.add(fPassword);
JSONObject ret = new JSONObject();
Table table = null;
String querysql = "select * from userTableName where fPhoneNumber = ? and fPassword = ? "; //这里的userTableName 改成自己的表名
try {
table = DataUtils.queryData(conn, querysql, sqlParams, columns, offset, limit);
JSONObject tableJson = Transform.tableToJson(table);
JSONArray rows = (JSONArray) tableJson.get("rows");
JSONObject rowJson = (JSONObject) rows.get(0); //一般符合条件的记录只应该有一条,所以只取第一条
JSONObject fIDJson = (JSONObject) rowJson.get("fID"); //取什么字段可以自己修改
String fID = fIDJson.getString("value");
String transSql = " update userTableName set fLastTime = now() ";//这里的userTableName 改成自己的表名
transSql += " where fID = '";
transSql += fID ;
transSql += "'"; //这段sql大家可以修改成自己的版本,以实现登录后想做的动作
java.sql.PreparedStatement pstmt = conn.prepareStatement(transSql);
if (pstmt.executeUpdate() == 1){
ret.put("loginStatus", "0"); //登录成功
ret.put("tableData", Transform.tableToJson(table)); //返回复合结果,不在只是简单的表记录,大家也可以进行扩充
//System.out.println("ret==="+ret);
return ret;
}else{
ret.put("loginStatus", "-1"); // 登录失败
ret.put("errorTxt", "更新登录状态失败!");
return ret;
}
}catch(Exception e){
ret.put("loginStatus", "-100"); // 登录失败
ret.put("errorTxt", e.toString());
return ret;
} finally {
conn.close();
}
}
|
评分
-
查看全部评分
|