シングルポイント登録3
7147 ワード
ログイン時には、クライアントだけでなくサーバー側も完全な登録項目です.
前の二つの編を通して分かるように、私のアーキテクチャはspringのMVCとspring注釈を使っていますが、実は全然分かりません.
以下はログイン方法のコードで、ローカルログインとクライアントのログインの2種類があります.
以下はコードです
もう一つは、クライアントに値を渡すことです.コードは以下の通りです.
一つは、JSでJSONをどのように解析し、その中のデータを取得するかです.
一つは、Jsonの中のJsonがどのようにUserの対象に転化しますか?
この二つの問題は他の二つの文章を見ましょう.
著作権声明:本文はブロガーのオリジナル文章で、ブロガーの許可なしに転載してはいけません.
前の二つの編を通して分かるように、私のアーキテクチャはspringのMVCとspring注釈を使っていますが、実は全然分かりません.
以下はログイン方法のコードで、ローカルログインとクライアントのログインの2種類があります.
package com.tujia.tuuser.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.util.WebUtils;
import com.tujia.common.config.ResultCode;
import com.tujia.common.exception.UnAuthedException;
import com.tujia.core.security.SecurityUtil;
import com.tujia.core.util.Md5Util;
import com.tujia.core.util.ParamChecker;
import com.tujia.tuuser.entity.User;
import com.tujia.tuuser.service.UserService;
@Controller
public class UserLoginController extends BaseController {
@Resource
private UserService UserService;
@Resource
private SecurityUtil securityUtil;
@RequestMapping(value = "/tulogin", produces = "text/html")
public String listByUser(Model model,HttpServletRequest request, HttpServletResponse response) {
securityUtil.requrl(request,response);
return "tulogin";
}
/**
* /
* @param map
* @param request
* @param response
*/
@RequestMapping(value = "/tulogin")
public void loginServer(@RequestBody Map<String, Object> map,
HttpServletRequest request, HttpServletResponse response) throws UnAuthedException {
response.setCharacterEncoding("UTF-8");
String phone = (String) map.get("phone");
String password = Md5Util.md5((String) map.get("password"));
ResultCode resultCode = ResultCode.SUCCEED;
Object result = null;
try {
ParamChecker.notEmpty("phone", phone);
ParamChecker.notEmpty("password", password);
User user = UserService.login(request, response, phone, password);
String requrlCookie = securityUtil.getReqURL(request,response);
result = requrlCookie;
} catch (UnAuthedException e) {
logger.error(e.getMessage());
resultCode = e.getResultCode();
result = e.getMessage();
} catch (Exception e) {
logger.error(e.getMessage(), e);
resultCode = ResultCode.INTERNAL_ERROR;
result = e.getMessage();
}
setResponse(response, resultCode, result);
}
/**
*
*/
@RequestMapping(value = "/tulogout",method =RequestMethod.POST)
public void logout(
HttpServletRequest request, HttpServletResponse response) {
ResultCode resultCode = ResultCode.SUCCEED;
UserService.logout(request, response);
Object result = null;
setResponse(response, resultCode, result);
}
// , 。
@RequestMapping(value = "/tuloginMethod")
public void login(@RequestBody Map<String, Object> map,
HttpServletRequest request, HttpServletResponse response) throws UnAuthedException {
response.setCharacterEncoding("UTF-8");
String phone = (String) map.get("phone");
String password = Md5Util.md5((String) map.get("password"));
ResultCode resultCode = ResultCode.SUCCEED;
Object result = null;
User user = null;
String token = null;
try {
ParamChecker.notEmpty("phone", phone);
ParamChecker.notEmpty("password", password);
user = UserService.login(request, response, phone, password);
token = (String) request.getAttribute("token");
} catch (UnAuthedException e) {
logger.error(e.getMessage());
resultCode = e.getResultCode();
result = e.getMessage();
} catch (Exception e) {
logger.error(e.getMessage(), e);
resultCode = ResultCode.INTERNAL_ERROR;
result = e.getMessage();
}
setResponseMethod(response, resultCode, result, user , token);
}
//tokenMethod, token, 。
@RequestMapping(value = "/tokenMethod")
public void tuloginMethod(@RequestBody Map<String, Object> map,
HttpServletRequest request, HttpServletResponse response) throws UnAuthedException {
response.setCharacterEncoding("UTF-8");
String token = (String) map.get("token");
boolean tokenServer = securityUtil.getAuthTuUser(token);
String ret = "";
try {
PrintWriter out = response.getWriter();
if(tokenServer){
ret = "success";
out.println(ret);
out.close();
}else{
ret = "noLogin";
out.println(ret);
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
その中で、方法の後のsetResponseMethod
この方法は、値を伝えるもので、jsonを通じて値を伝えます.フロントにあげるか、クライアントにあげるか.以下はコードです
protected void setResponse(HttpServletResponse resp, ResultCode resultCode,
Object result) {
setResponse(resp, resultCode, result, null);
}
protected void setResponse(HttpServletResponse resp, ResultCode resultCode,
Object result, String callback) {
try {
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
Map<String, Object> ret = new LinkedHashMap<String, Object>();
ret.put("code", resultCode.getCode());
ret.put("data", result);
String responseStr = GSON.toJson(ret);
out.println(responseStr);
out.close();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
これは前のページの転送値です.もう一つは、クライアントに値を渡すことです.コードは以下の通りです.
protected void setResponseMethod(HttpServletResponse resp, ResultCode resultCode,
Object result,User user,String token) {
setResponseMethod(resp, resultCode, result,user,token , null);
}
protected void setResponseMethod(HttpServletResponse resp, ResultCode resultCode,
Object result,User user ,String token , String callback) {
try {
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
Map<String, Object> ret = new LinkedHashMap<String, Object>();
ret.put("code", resultCode.getCode());
ret.put("data", result);
ret.put("user", user);
ret.put("token", token);
String responseStr = GSON.toJson(ret);
out.println(responseStr);
out.close();
resp.setCharacterEncoding("utf-8");
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
この二つのリレーのjsonは、二つの問題を引き起こしました.一つは、JSでJSONをどのように解析し、その中のデータを取得するかです.
一つは、Jsonの中のJsonがどのようにUserの対象に転化しますか?
この二つの問題は他の二つの文章を見ましょう.
著作権声明:本文はブロガーのオリジナル文章で、ブロガーの許可なしに転載してはいけません.