Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-link-report
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-link-report
Commits
6264d8aa
提交
6264d8aa
authored
8月 21, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
尝试增加拦截,shareview页面自动跳转登录页面
上级
fcd85c81
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
111 行增加
和
0 行删除
+111
-0
WebConfig.java
src/main/java/com/link/report/config/WebConfig.java
+26
-0
LoginInterceptor.java
...in/java/com/link/report/interceptor/LoginInterceptor.java
+85
-0
没有找到文件。
src/main/java/com/link/report/config/WebConfig.java
0 → 100644
浏览文件 @
6264d8aa
package
com
.
link
.
report
.
config
;
import
com.link.report.interceptor.LoginInterceptor
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
@Configuration
public
class
WebConfig
implements
WebMvcConfigurer
{
// 注入Spring管理的拦截器实例(而非new MyInterceptor())
@Autowired
private
LoginInterceptor
loginInterceptor
;
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
registry
.
addInterceptor
(
loginInterceptor
)
.
addPathPatterns
(
"/report/jmreport/shareView/**"
,
"/jmreport/shareView/**"
)
// 拦截所有路径
.
excludePathPatterns
(
// 排除以下路径
"/login"
,
// 登录页
"/doLogin"
,
// 登录提交接口
"/static/**"
,
// 静态资源
"/error"
// 错误页
).
order
(
1
);
}
}
src/main/java/com/link/report/interceptor/LoginInterceptor.java
0 → 100644
浏览文件 @
6264d8aa
package
com
.
link
.
report
.
interceptor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
org.springframework.web.servlet.ModelAndView
;
import
javax.servlet.http.Cookie
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.net.URLEncoder
;
@Slf4j
@Component
public
class
LoginInterceptor
implements
HandlerInterceptor
{
// 域名信息
@Value
(
"${jeecg.jmreport.domainUrl}"
)
private
String
domainUrl
;
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
// 1. 检查用户是否已登录从header中获取token X-token
String
token
=
request
.
getHeader
(
"token"
);
if
(
token
==
null
)
{
String
xtoken
=
request
.
getHeader
(
"X-token"
);
if
(
xtoken
!=
null
)
{
token
=
xtoken
;
}
}
String
requestURI
=
request
.
getRequestURI
();
log
.
info
(
"requestURI = "
+
requestURI
);
// 2. 如果未登录,则重定向到登录页
if
(
token
==
null
)
{
Cookie
[]
cookies
=
request
.
getCookies
();
if
(
cookies
!=
null
)
{
for
(
Cookie
cookie
:
cookies
)
{
if
(
cookie
.
getName
().
equals
(
"Admin-Token"
))
{
token
=
cookie
.
getValue
();
// TODO 加上鉴权和权限认证
// 已登录,继续执行
return
true
;
}
}
}
// 未登录,重定向到登录页面
log
.
info
(
"未登录,重定向到登录页面"
);
if
(
domainUrl
==
null
){
domainUrl
=
getCurrentUrl
(
request
);
}
// String encode = URLEncodeUtil.encode(requestURI);
String
encodedUrl
=
URLEncoder
.
encode
(
requestURI
,
"UTF-8"
);
response
.
sendRedirect
(
domainUrl
+
"/#/login?redirect="
+
encodedUrl
);
// 重定向到登录页面
return
false
;
}
return
true
;
}
@Override
public
void
postHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
ModelAndView
modelAndView
)
throws
Exception
{
// 可选的后续处理
log
.
info
(
"postHandle 方法被调用"
);
log
.
info
(
"modelAndView = "
+
modelAndView
);
}
@Override
public
void
afterCompletion
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
Exception
ex
)
throws
Exception
{
// 可选的最终处理
log
.
info
(
"afterCompletion 方法被调用"
);
}
// 工具方法:获取当前请求的完整URL(包含参数)
private
String
getCurrentUrl
(
HttpServletRequest
request
)
{
StringBuffer
url
=
request
.
getRequestURL
();
// 如:http://example.com/user/profile
String
queryString
=
request
.
getQueryString
();
// 如:id=1&name=test
if
(
queryString
!=
null
)
{
url
.
append
(
"?"
).
append
(
queryString
);
// 拼接参数:http://example.com/user/profile?id=1&name=test
}
return
url
.
toString
();
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论