以登录操作举例,下面是定义的实体类对象
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 对应的是参数类型
运行效果
点击红框处,内容会自动添加到左侧文本域当中,操作简单,大大节省了编写测试数据的时间,从而提高开发效率