SpringBoot vue 足球俱樂部信息管理系統(tǒng)
SpringBoot 足球俱樂部信息管理系統(tǒng) 功能介紹
首頁 圖片輪播 賽事信息 新聞資訊 球員信息 教練信息 閱覽室 論壇 登錄注冊 個人中心 我的發(fā)布 我的收藏 在線客服
后臺管理 登錄注冊 個人中心 用戶管理 球員信息管理 教練信息管理 賽事信息管理 閱覽室管理 論壇管理 配置管理 新聞資訊管理 客服管理
角色:用戶 管理員
使用技術(shù)
SpringBoot框架
Mysql數(shù)據(jù)庫
Mybaits
vue(前端)
功能展示
Springboot配置application.yml
server:
tomcat:
uri-encoding: UTF-8
port: 8080
servlet:
context-path: /springboot
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: root
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
resources:
static-locations: classpath:static/,file:static/
#mybatis
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
#實體掃描份企,多個package用逗號或者分號分隔
typeAliasesPackage: com.entity
global-config:
#主鍵類型 0:"數(shù)據(jù)庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數(shù)字類型唯一ID)", 3:"全局唯一ID UUID";
id-type: 1
#字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"
field-strategy: 2
#駝峰下劃線轉(zhuǎn)換
db-column-underline: true
#刷新mapper 調(diào)試神器
refresh-mapper: true
#邏輯刪除配置
logic-delete-value: -1
logic-not-delete-value: 0
#自定義SQL注入器
sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
#springboot 項目mybatis plus 設(shè)置 jdbcTypeForNull (oracle數(shù)據(jù)庫需配置JdbcType.NULL, 默認是Other)
jdbc-type-for-null: 'null'
權(quán)限攔截
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;
/**
* 權(quán)限(Token)驗證
*/
@Component
public class AuthorizationInterceptor implements HandlerInterceptor {
public static final String LOGIN_TOKEN_KEY = "Token";
@Autowired
private TokenService tokenService;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//支持跨域請求
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中獲取token
String token = request.getHeader(LOGIN_TOKEN_KEY);
/**
* 不需要驗證權(quán)限的方法直接放過
*/
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;
}
}
運行
創(chuàng)建數(shù)據(jù)庫, 然后修改數(shù)據(jù)庫連接相關(guān)信息立由。
啟動 Springboot 類的main方法
運行vue
npm run serve
前臺訪問地址:http://localhost:8080/springboot/front/index.html
注冊或使用賬號:liang 密碼:liang
后臺訪問地址:http://localhost:8080/springboot/admin/dist/index.html
管理員賬號:liang 密碼:liang