添加JSON快速回复功能;添加注册接口;添加登录辅助信息查询的一些接口;
This commit is contained in:
parent
e1f25720c0
commit
d59880bb47
@ -58,44 +58,6 @@ public class JSONParameter {
|
||||
return JSON.toJSONString(object);
|
||||
}
|
||||
|
||||
// 根据对象构造获得标准的JSON响应字符串返回
|
||||
public String getJSONStandardRespond(Integer status, String msg, Object dataObject){
|
||||
JSONBaseRespondObject respondObject = new JSONBaseRespondObject(status, msg);
|
||||
respondObject.setData(dataObject);
|
||||
return getJSONString(respondObject);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(404状态)
|
||||
public String getJSONStandardRespond404(String msg){
|
||||
JSONBaseRespondObject respondObject = new JSONBaseRespondObject(404, msg);
|
||||
return getJSONString(respondObject);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(500状态)
|
||||
public String getJSONStandardRespond500(String msg){
|
||||
JSONBaseRespondObject respondObject = new JSONBaseRespondObject(500, msg);
|
||||
return getJSONString(respondObject);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(200状态)
|
||||
public String getJSONStandardRespond200(Object dataObject){
|
||||
JSONBaseRespondObject respondObject = new JSONBaseRespondObject(200, "ok");
|
||||
respondObject.setData(dataObject);
|
||||
return getJSONString(respondObject);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(403状态)
|
||||
public String getJSONStandardRespond403(){
|
||||
JSONBaseRespondObject respondObject = new JSONBaseRespondObject(403, "Forbidden");
|
||||
return getJSONString(respondObject);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(401状态)
|
||||
public String getJSONStandardRespond401(){
|
||||
JSONBaseRespondObject respondObject = new JSONBaseRespondObject(401, "Unauthorized");
|
||||
return getJSONString(respondObject);
|
||||
}
|
||||
|
||||
// 由JSON对象获得对应的Java对象
|
||||
public <T> T getJavaObject(JSONObject json, Class<T> type){
|
||||
return json.toJavaObject(type);
|
||||
|
@ -0,0 +1,80 @@
|
||||
package com.codesdream.ase.component.datamanager;
|
||||
|
||||
import com.codesdream.ase.component.json.respond.EmptyDataObjectRespond;
|
||||
import com.codesdream.ase.component.json.respond.JSONBaseRespondObject;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
|
||||
@Component
|
||||
public class QuickJSONRespond {
|
||||
@Resource
|
||||
private JSONParameter jsonParameter;
|
||||
|
||||
// 根据对象构造获得标准的JSON响应字符串返回
|
||||
public String getJSONStandardRespond(Integer status, String msg, String info, Object dataObject){
|
||||
JSONBaseRespondObject respondObject = new JSONBaseRespondObject(status, msg);
|
||||
if(info != null) respondObject.setInfo(info);
|
||||
else respondObject.setInfo(null);
|
||||
|
||||
respondObject.setData(dataObject);
|
||||
return jsonParameter.getJSONString(respondObject);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回特定状态码的和解释息
|
||||
public String getJSONStandardRespond(Integer code, String msg, String info){
|
||||
JSONBaseRespondObject respondObject = new JSONBaseRespondObject(code, msg);
|
||||
if(info != null) respondObject.setInfo(info);
|
||||
else respondObject.setInfo(null);
|
||||
respondObject.setData(null);
|
||||
return jsonParameter.getJSONString(respondObject);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(404状态)
|
||||
public String getRespond404(String info){
|
||||
return getJSONStandardRespond(404, "Not Found", info);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(500状态)
|
||||
public String getRespond500(String info){
|
||||
return getJSONStandardRespond(500, "Internal Server Error", info);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(200状态)
|
||||
public String getRespond200(String info){
|
||||
return getJSONStandardRespond(200, "Ok", info);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(200状态)
|
||||
public String getRespond200(String info, Object object){
|
||||
return getJSONStandardRespond(200, "Ok", info, object);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(403状态)
|
||||
public String getRespond403(String info){
|
||||
return getJSONStandardRespond(403, "Forbidden", info);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(403状态)
|
||||
public String getRespond406(String info){
|
||||
return getJSONStandardRespond(406, "Not Acceptable", info);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(501态)
|
||||
public String getRespond501(String info){
|
||||
return getJSONStandardRespond(501, "Not Implemented", info) ;
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(401状态)
|
||||
public String getRespond401(String info){
|
||||
return getJSONStandardRespond(401, "Unauthorized", info);
|
||||
}
|
||||
|
||||
// 获得标准的JSON响应字符串返回(400状态)
|
||||
public String getRespond400(String info){
|
||||
return getJSONStandardRespond(400, "Bad Request", info);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.codesdream.ase.component.json.request;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class UserRegisterChecker {
|
||||
|
||||
// 学号
|
||||
private String studentId;
|
||||
|
||||
// 密码
|
||||
private String password;
|
||||
|
||||
// 密保问题
|
||||
private String userQuestion;
|
||||
|
||||
// 密保答案
|
||||
private String userAnswer;
|
||||
}
|
@ -17,6 +17,9 @@ public class JSONBaseRespondObject extends JSONBaseObject {
|
||||
// 存放响应信息提示
|
||||
private String msg = "";
|
||||
|
||||
// 额外信息
|
||||
private String info = null;
|
||||
|
||||
// 状态
|
||||
private Integer status = 200;
|
||||
|
||||
|
@ -9,7 +9,8 @@ public class UserLoginCheckerJSONRespond {
|
||||
Boolean userExist = null;
|
||||
Boolean userBanned = null;
|
||||
Boolean loginStatus = null;
|
||||
String respondInformation = "";
|
||||
String respondInformation = null;
|
||||
String token = null;
|
||||
String uid = null;
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.codesdream.ase.component.permission;
|
||||
|
||||
import com.codesdream.ase.component.datamanager.JSONParameter;
|
||||
import com.codesdream.ase.component.datamanager.QuickJSONRespond;
|
||||
import com.codesdream.ase.component.json.respond.UserLoginCheckerJSONRespond;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
@ -19,7 +20,7 @@ import java.io.IOException;
|
||||
public class ASEAccessDeniedHandler implements AccessDeniedHandler {
|
||||
|
||||
@Resource
|
||||
private JSONParameter jsonParameter;
|
||||
private QuickJSONRespond quickJSONRespond;
|
||||
|
||||
@Override
|
||||
public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException)
|
||||
@ -27,7 +28,7 @@ public class ASEAccessDeniedHandler implements AccessDeniedHandler {
|
||||
log.info("ASEAccessDeniedHandler Found!");
|
||||
|
||||
// 对无权限操作返回403
|
||||
response.getWriter().print(jsonParameter.getJSONStandardRespond403());
|
||||
response.getWriter().print(quickJSONRespond.getRespond403(null));
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.codesdream.ase.component.permission;
|
||||
|
||||
import com.codesdream.ase.component.datamanager.JSONParameter;
|
||||
import com.codesdream.ase.component.datamanager.QuickJSONRespond;
|
||||
import com.codesdream.ase.component.json.respond.JSONBaseRespondObject;
|
||||
import com.codesdream.ase.component.json.respond.UserLoginCheckerJSONRespond;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -19,13 +20,13 @@ import java.io.IOException;
|
||||
@Component
|
||||
public class ASEAuthenticationEntryPoint implements AuthenticationEntryPoint {
|
||||
@Resource
|
||||
private JSONParameter jsonParameter;
|
||||
private QuickJSONRespond quickJSONRespond;
|
||||
|
||||
@Override
|
||||
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException)
|
||||
throws IOException, ServletException {
|
||||
// 对匿名用户返回401
|
||||
response.getWriter().print(jsonParameter.getJSONStandardRespond401());
|
||||
response.getWriter().print(quickJSONRespond.getRespond401(null));
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.codesdream.ase.component.permission;
|
||||
|
||||
import com.codesdream.ase.component.datamanager.JSONParameter;
|
||||
import com.codesdream.ase.component.datamanager.QuickJSONRespond;
|
||||
import com.codesdream.ase.component.json.respond.UserLoginCheckerJSONRespond;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
@ -19,21 +20,15 @@ import java.io.IOException;
|
||||
public class ASEAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
|
||||
|
||||
@Resource
|
||||
private JSONParameter jsonParameter;
|
||||
private QuickJSONRespond quickJSONRespond;
|
||||
|
||||
@Override
|
||||
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception)
|
||||
throws IOException
|
||||
{
|
||||
log.info("ASEAuthenticationFailureHandler Login Fail!");
|
||||
UserLoginCheckerJSONRespond respond = new UserLoginCheckerJSONRespond();
|
||||
|
||||
respond.setUserExist(null);
|
||||
respond.setUserBanned(null);
|
||||
respond.setLoginStatus(false);
|
||||
respond.setRespondInformation("Authentication Failed");
|
||||
|
||||
// 填充response对象
|
||||
response.getWriter().write(jsonParameter.getJSONStandardRespond200(respond));
|
||||
// 认证失败返回406
|
||||
response.getWriter().write(quickJSONRespond.getRespond406("Authentication Failure"));
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.codesdream.ase.component.permission;
|
||||
|
||||
import com.codesdream.ase.component.auth.JSONTokenAuthenticationToken;
|
||||
import com.codesdream.ase.component.datamanager.JSONParameter;
|
||||
import com.codesdream.ase.component.datamanager.QuickJSONRespond;
|
||||
import com.codesdream.ase.component.json.respond.UserLoginCheckerJSONRespond;
|
||||
import com.codesdream.ase.model.permission.User;
|
||||
|
||||
@ -27,7 +28,7 @@ import java.util.Optional;
|
||||
@Component
|
||||
public class ASEAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {
|
||||
@Resource
|
||||
private JSONParameter jsonParameter;
|
||||
private QuickJSONRespond quickJSONRespond;
|
||||
|
||||
@Resource
|
||||
private IAuthService authService;
|
||||
@ -40,7 +41,6 @@ public class ASEAuthenticationSuccessHandler extends SavedRequestAwareAuthentica
|
||||
UserLoginCheckerJSONRespond respond = new UserLoginCheckerJSONRespond();
|
||||
respond.setUserExist(authentication.isAuthenticated());
|
||||
respond.setLoginStatus(authentication.isAuthenticated());
|
||||
respond.setRespondInformation("Authentication Success");
|
||||
|
||||
// 获得 JSONTokenAuthenticationToken
|
||||
JSONTokenAuthenticationToken authenticationToken = (JSONTokenAuthenticationToken) authentication;
|
||||
@ -55,7 +55,8 @@ public class ASEAuthenticationSuccessHandler extends SavedRequestAwareAuthentica
|
||||
}
|
||||
else respond.setToken("");
|
||||
|
||||
response.getWriter().write(jsonParameter.getJSONStandardRespond200(respond));
|
||||
// 认证成功返回200
|
||||
response.getWriter().write(quickJSONRespond.getRespond200("Authentication Success", respond));
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.codesdream.ase.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.codesdream.ase.component.datamanager.JSONParameter;
|
||||
import com.codesdream.ase.component.datamanager.QuickJSONRespond;
|
||||
import com.codesdream.ase.component.json.respond.JSONStandardFailedRespond;
|
||||
import com.codesdream.ase.component.json.respond.JSONBaseRespondObject;
|
||||
import com.codesdream.ase.component.permission.ASEUsernameEncoder;
|
||||
@ -30,6 +31,9 @@ public class LoginController {
|
||||
@Resource
|
||||
private JSONParameter jsonParameter;
|
||||
|
||||
@Resource
|
||||
private QuickJSONRespond quickJSONRespond;
|
||||
|
||||
@Resource
|
||||
private IUserService userService;
|
||||
|
||||
@ -61,11 +65,11 @@ public class LoginController {
|
||||
// 构造返回对象
|
||||
UserLoginCheckerJSONRespond respond = new UserLoginCheckerJSONRespond();
|
||||
respond.setUserExist(existStatus);
|
||||
return jsonParameter.getJSONStandardRespond200(respond);
|
||||
return quickJSONRespond.getRespond200(null, respond);
|
||||
}
|
||||
else {
|
||||
// 返回失败对象
|
||||
return jsonParameter.getJSONStandardRespond500("Error");
|
||||
return quickJSONRespond.getRespond400("CheckType Mismatch");
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,12 +85,12 @@ public class LoginController {
|
||||
|
||||
if(loginChecker.getCheckType().equals("UIDGeneratorChecker")) {
|
||||
UserLoginCheckerJSONRespond respond = new UserLoginCheckerJSONRespond();
|
||||
respond.setRespondInformation(userService.getUsernameByStudentId(loginChecker.getUsername()));
|
||||
return jsonParameter.getJSONStandardRespond200(respond);
|
||||
respond.setUid(userService.getUsernameByStudentId(loginChecker.getUsername()));
|
||||
return quickJSONRespond.getRespond200(null, respond);
|
||||
}
|
||||
else {
|
||||
// 返回失败对象
|
||||
return jsonParameter.getJSONStandardRespond500("Error");
|
||||
return quickJSONRespond.getRespond400("CheckType Mismatch");
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
package com.codesdream.ase.controller;
|
||||
|
||||
import com.codesdream.ase.component.datamanager.JSONParameter;
|
||||
import com.codesdream.ase.component.datamanager.QuickJSONRespond;
|
||||
import com.codesdream.ase.component.json.request.UserRegisterChecker;
|
||||
import com.codesdream.ase.model.information.BaseStudentInfo;
|
||||
import com.codesdream.ase.model.permission.User;
|
||||
import com.codesdream.ase.service.BaseInformationService;
|
||||
@ -8,10 +11,11 @@ import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
@Controller
|
||||
public class RegisterController {
|
||||
@ -21,33 +25,49 @@ public class RegisterController {
|
||||
@Resource
|
||||
private BaseInformationService baseInformationService;
|
||||
|
||||
@Resource
|
||||
private JSONParameter jsonParameter;
|
||||
|
||||
@Resource
|
||||
private QuickJSONRespond quickJSONRespond;
|
||||
|
||||
@RequestMapping(value = "/register")
|
||||
String registerView(Model model){
|
||||
return "register";
|
||||
}
|
||||
|
||||
// 处理注册表单
|
||||
@PostMapping(value = "/register")
|
||||
String doRegister(Model model, HttpServletRequest request){
|
||||
Map<String, String[]> parameterMap= request.getParameterMap();
|
||||
@PostMapping(value = "/register/do_register")
|
||||
@ResponseBody
|
||||
String doRegister(HttpServletRequest request){
|
||||
|
||||
Optional<UserRegisterChecker> registerCheckerOptional =
|
||||
jsonParameter.getJavaObjectByRequest(request, UserRegisterChecker.class);
|
||||
|
||||
// 检查JSON是否完整
|
||||
if(!registerCheckerOptional.isPresent()){
|
||||
return quickJSONRespond.getRespond400("Illegal JSON Format");
|
||||
}
|
||||
|
||||
// 检查数据是否完整
|
||||
UserRegisterChecker registerChecker = registerCheckerOptional.get();
|
||||
if(registerChecker.getPassword() == null
|
||||
|| registerChecker.getStudentId() == null
|
||||
|| registerChecker.getUserAnswer() == null
|
||||
|| registerChecker.getUserQuestion() == null){
|
||||
return quickJSONRespond.getRespond400("Incomplete Data");
|
||||
}
|
||||
|
||||
// 进行处理前的检查
|
||||
if(parameterMap.containsKey("student-id")
|
||||
&& parameterMap.containsKey("password")
|
||||
&& parameterMap.containsKey("retry-password")
|
||||
&& parameterMap.containsKey("user-question")
|
||||
&& parameterMap.containsKey("user-answer")
|
||||
) {
|
||||
// 获得提交学号
|
||||
String student_id = parameterMap.get("student-id")[0].toString();
|
||||
String student_id = registerChecker.getStudentId();
|
||||
// 获得密保问题
|
||||
String user_question = parameterMap.get("user-question")[0].toString();
|
||||
String user_question = registerChecker.getUserQuestion();
|
||||
// 获得密保答案
|
||||
String user_answer = parameterMap.get("user-answer")[0].toString();
|
||||
String user_answer = registerChecker.getUserAnswer();
|
||||
|
||||
// 检查用户的基本信息是否录入系统
|
||||
if(!baseInformationService.checkStudentInfo(student_id))
|
||||
throw new RuntimeException("Student ID Not Found In Base Information Service");
|
||||
return quickJSONRespond.getRespond500("StudentID Already Used");
|
||||
|
||||
// 查找对应的基本信息
|
||||
BaseStudentInfo studentInfo = baseInformationService.findStudentInfoByStudentId(student_id);
|
||||
@ -60,22 +80,13 @@ public class RegisterController {
|
||||
user.getUserAuth().setUserAnswer(user_answer);
|
||||
user.getUserAuth().setMail("");
|
||||
|
||||
String password = parameterMap.get("password")[0].toString();
|
||||
String retry_password = parameterMap.get("retry-password")[0].toString();
|
||||
String password = registerChecker.getPassword();
|
||||
|
||||
if (password.equals(retry_password)) {
|
||||
user.setPassword(password);
|
||||
userService.save(user);
|
||||
// 返回登录界面
|
||||
return "login";
|
||||
}
|
||||
else{
|
||||
throw new RuntimeException("Retry Password Not Correct");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return "register";
|
||||
// 成功注册
|
||||
return quickJSONRespond.getRespond200("Register Success");
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user