以登錄操作舉例,下面是定義的實體類對象
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@ApiModel(description = "登錄表單")
public class LoginFormParams implements Serializable {
/**
* 用戶賬號
*/
@ApiModelProperty(value = "登錄賬號", name = "account", required = true, example = "admin")
@NotBlank(message = "賬號不允許爲空,請輸入")
private String account;
/**
* 用戶密碼
*/
@ApiModelProperty(value = "登錄密碼", name = "password", required = true, example = "123456")
@NotBlank(message = "密碼不允許爲空,請輸入")
private String password;
/**
* 圖片驗證碼
*/
@ApiModelProperty(value = "驗證碼", name = "validCode", required = false, example = "TG20")
/*@NotBlank(message = "驗證碼不允許爲空,請輸入")*/
private String validCode;
/**
* 記住我
*/
@ApiModelProperty(value = "記住我", name = "rememberMe", required = false, example = "false")
private boolean rememberMe;
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getValidCode() {
return validCode;
}
public void setValidCode(String validCode) {
this.validCode = validCode;
}
public boolean isRememberMe() {
return rememberMe;
}
public void setRememberMe(boolean rememberMe) {
this.rememberMe = rememberMe;
}
}
後臺Controller處理程序
/**
* 賬號登錄
* @param form
* @param bindingResult
* @param session
* @return
*/
@PostMapping("/ajaxLogin")
@ApiOperation(value = "用戶登錄", notes = "用戶異步登錄處理")
@ApiImplicitParam(name = "form", value = "用戶登錄表單", required = true, dataType = "LoginFormParams")
@ResponseBody
public JsonResult ajaxLogin(@Valid @RequestBody LoginFormParams form, BindingResult bindingResult, HttpSession session) throws Exception{
if(bindingResult.hasErrors()){
for (ObjectError error : bindingResult.getAllErrors()){
return JsonResult.error(GlobalParams.EX_CODE4.getCode(), error.getDefaultMessage(), null);
}
}
// 獲取當前用戶對象
Subject subject = SecurityUtils.getSubject();
// 生成令牌
UsernamePasswordToken token = new UsernamePasswordToken(form.getAccount(),form.getPassword());
if(form.isRememberMe()){
token.setRememberMe(true);
}else{
token.setRememberMe(false);
}
subject.login(token);
// 登錄成功的用戶對象
SysUser user = (SysUser)subject.getPrincipal();
// 將信息存儲至Redis
session.setAttribute("user", user);
return JsonResult.<SysUser>ok(GlobalParams.EX_CODE5, user);
}
【注意】兩處地方
@RequestBody 以及
@ApiImplicitParam(name = "form", value = "用戶登錄表單", required = true, dataType = "LoginFormParams")
其中name 對應的是參數名稱,value 是描述,dataType 對應的是參數類型
運行效果
點擊紅框處,內容會自動添加到左側文本域當中,操作簡單,大大節省了編寫測試數據的時間,從而提高開發效率