若依项目的启动
1、下载源码
git clone https://gitee.com/y_project/RuoYi-Vue.git
拉取代码、解压解压后
项目结构:
2、项目依赖
1、前端的依赖
2、后端的依赖
模块化:
依赖:
3、项目配置
1、前端配置
查看package.json 文件、能看到基本的依赖和配置、项目结构可以先不用看
npm install 安装依赖
2、后端配置
pom.xml 文件下载依赖
yaml文件进行修改
redis的配置修改
redis.host 改成自己的ip
mysql配置修改
1、url
2、username
3、password
4、启动
前端启动:
npm run dev
后端启动
找到ruoyi-admin 模块、找到 RuoYiApplication 点击启动就可以
5、遇到问题
1、前端登录 验证码图片不展示
我的情况是:我把 yaml中的ruoyi 配置都删除了、验证码不能展示
通过debug 找到 、CaptchaController下面的
@GetMapping("/captchaImage")
public AjaxResult getCode(HttpServletResponse response) throws IOException
{
AjaxResult ajax = AjaxResult.success();
boolean captchaEnabled = configService.selectCaptchaEnabled();
ajax.put("captchaEnabled", captchaEnabled);
if (!captchaEnabled)
{
return ajax;
}
// 保存验证码信息
String uuid = IdUtils.simpleUUID();
String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid;
String capStr = null, code = null;
BufferedImage image = null;
// 生成验证码
//这里 会加载 yaml中的文件 获取math的验证码生产方式 我把yaml中注释了 这里报空
String captchaType = RuoYiConfig.getCaptchaType();
if ("math".equals(captchaType))
{
String capText = captchaProducerMath.createText();
capStr = capText.substring(0, capText.lastIndexOf("@"));
code = capText.substring(capText.lastIndexOf("@") + 1);
image = captchaProducerMath.createImage(capStr);
}
else if ("char".equals(captchaType))
{
capStr = code = captchaProducer.createText();
image = captchaProducer.createImage(capStr);
}
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
// 转换流信息写出
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try
{
ImageIO.write(image, "jpg", os);
}
catch (IOException e)
{
return AjaxResult.error(e.getMessage());
}
ajax.put("uuid", uuid);
ajax.put("img", Base64.encode(os.toByteArray()));
return ajax;
}
2、登录无法成功
登录使用了spring-security、登录可以成功
找到system 下面的 SysLoginController 类、找到
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody)
{
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}
查看 loginService.login(xxx)方法的详情
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); 这行代码老是报错 注释掉就可以
后来研究一下,是我把 yaml配置文件中的 国际化注释、放开就可以
# Spring配置
spring:
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
3、小结:
yaml不能随便删除、我的错误都是把配置删除、要有解决问题的能力、通过debug、可以阅读一下框架的代码、梳理项目流程