项目说明
本号所发布的项目均由我部署运行验证,可保证项目系统正常运行,以及提供完整源码。
如需要远程部署/定制/讲解系统,可以联系我。定制项目未经同意不会上传!
项目源码获取方式放在文章末尾处
注:项目仅供学习使用,不可商用,如涉及侵权请联系我删除
项目技术
数据库:mysql5.7
开发语言:java、html
开发工具:idea、vscode
前端技术:vue
后端技术:springboot
有参考文档
功能简介
该项目是一个农产品直卖平台,有管理后台、用户前台功能,具体功能菜单如下:
管理后台
首页
个人中心
修改密码
个人信息
数据管理
公告类型管理
农产品类型管理
商家信用类型管理
公告信息管理
农产品管理
农产品管理
农产品收藏管理
农产品订单管理
用户管理
轮播图信息
用户前台
登录
首页
公告信息
农产品
商家
个人中心
后台管理
购物车
注:如果想修改部分功能或新增删除,可以联系我做功能改动。也可以联系我定制开发,保证项目唯一性,没有代码冗余,提供讲解服务。
项目截图
1.文档截图(有完整的文档参考)
2.项目部分功能截图
本号所提供的项目均来自我个人付费购得或互联网收集,不可商用,如涉及侵权,请联系删除。
代码片段
package com.interceptor;import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;import com.annotation.IgnoreAuth;
import com.entity.EIException;
import com.entity.TokenEntity;
import com.service.TokenService;
import com.utils.R;/*** 权限(Token)验证*/
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {public static final String LOGIN_TOKEN_KEY = "Token";@Autowiredprivate TokenService tokenService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String servletPath = request.getServletPath();if("/dictionary/page".equals(request.getServletPath()) || "/file/upload".equals(request.getServletPath()) || "/yonghu/register".equals(request.getServletPath()) ){//请求路径是字典表或者文件上传 直接放行return true;}//支持跨域请求response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");response.setHeader("Access-Control-Max-Age", "3600");response.setHeader("Access-Control-Allow-Credentials", "true");response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization");response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));IgnoreAuth annotation;if (handler instanceof HandlerMethod) {annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class);} else {return true;}//从header中获取tokenString token = request.getHeader(LOGIN_TOKEN_KEY);/*** 不需要验证权限的方法直接放过*/if(annotation!=null) {return true;}TokenEntity tokenEntity = null;if(StringUtils.isNotBlank(token)) {tokenEntity = tokenService.getTokenEntity(token);}if(tokenEntity != null) {request.getSession().setAttribute("userId", tokenEntity.getUserid());request.getSession().setAttribute("role", tokenEntity.getRole());request.getSession().setAttribute("tableName", tokenEntity.getTablename());request.getSession().setAttribute("username", tokenEntity.getUsername());return true;}PrintWriter writer = null;response.setCharacterEncoding("UTF-8");response.setContentType("application/json; charset=utf-8");try {writer = response.getWriter();writer.print(JSONObject.toJSONString(R.error(401, "请先登录")));} finally {if(writer != null){writer.close();}}
// throw new EIException("请先登录", 401);return false;}
}
项目源码获取方式
注:需要在手机上操作,如果遇到链接失效可以直接联系我
第一步:点击关注:程序员小嗨
第二步:对话框输入:源码,点击进入小程序。
第三步:进入小程序后在搜索界面输入标题或编号,然后点击[获取链接]