Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DiDi
kafka-manager
提交
cdac92ca
K
kafka-manager
项目概览
DiDi
/
kafka-manager
大约 1 年 前同步成功
通知
60
Star
6372
Fork
1229
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kafka-manager
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
cdac92ca
编写于
4月 14, 2021
作者:
E
EricZeng
提交者:
GitHub
4月 14, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #229 from didi/dev
通过获取类的RequestMapping注解来判断当前请求是否需要登录
上级
8f106240
2a57c260
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
40 addition
and
13 deletion
+40
-13
kafka-manager-common/src/main/java/com/xiaojukeji/kafka/manager/common/constant/ApiPrefix.java
...m/xiaojukeji/kafka/manager/common/constant/ApiPrefix.java
+0
-2
kafka-manager-extends/kafka-manager-account/src/main/java/com/xiaojukeji/kafka/manager/account/LoginService.java
...va/com/xiaojukeji/kafka/manager/account/LoginService.java
+1
-1
kafka-manager-extends/kafka-manager-account/src/main/java/com/xiaojukeji/kafka/manager/account/impl/LoginServiceImpl.java
...aojukeji/kafka/manager/account/impl/LoginServiceImpl.java
+6
-9
kafka-manager-web/src/main/java/com/xiaojukeji/kafka/manager/web/inteceptor/PermissionInterceptor.java
...i/kafka/manager/web/inteceptor/PermissionInterceptor.java
+33
-1
未找到文件。
kafka-manager-common/src/main/java/com/xiaojukeji/kafka/manager/common/constant/ApiPrefix.java
浏览文件 @
cdac92ca
...
...
@@ -11,8 +11,6 @@ public class ApiPrefix {
// login
public
static
final
String
API_V1_SSO_PREFIX
=
API_V1_PREFIX
+
"sso/"
;
public
static
final
String
API_V1_SSO_LOGIN
=
API_V1_SSO_PREFIX
+
"login"
;
public
static
final
String
API_V1_SSO_LOGOUT
=
API_V1_SSO_PREFIX
+
"logout"
;
// console
public
static
final
String
API_V1_NORMAL_PREFIX
=
API_V1_PREFIX
+
"normal/"
;
...
...
kafka-manager-extends/kafka-manager-account/src/main/java/com/xiaojukeji/kafka/manager/account/LoginService.java
浏览文件 @
cdac92ca
...
...
@@ -16,5 +16,5 @@ public interface LoginService {
void
logout
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Boolean
needJump2LoginPage
);
boolean
checkLogin
(
HttpServletRequest
request
,
HttpServletResponse
response
);
boolean
checkLogin
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
classRequestMappingValue
);
}
\ No newline at end of file
kafka-manager-extends/kafka-manager-account/src/main/java/com/xiaojukeji/kafka/manager/account/impl/LoginServiceImpl.java
浏览文件 @
cdac92ca
...
...
@@ -63,19 +63,16 @@ public class LoginServiceImpl implements LoginService {
}
@Override
public
boolean
checkLogin
(
HttpServletRequest
request
,
HttpServletResponse
response
)
{
String
uri
=
request
.
getRequestURI
();
if
(
uri
.
contains
(
".."
)
||
uri
.
contains
(
"./"
)
||
uri
.
contains
(
"///"
))
{
LOGGER
.
error
(
"class=LoginServiceImpl||method=checkLogin||msg=uri illegal, contains .. or ./ or ///||uri={}"
,
uri
);
public
boolean
checkLogin
(
HttpServletRequest
request
,
HttpServletResponse
response
,
String
classRequestMappingValue
)
{
if
(
ValidateUtils
.
isNull
(
classRequestMappingValue
))
{
LOGGER
.
error
(
"class=LoginServiceImpl||method=checkLogin||msg=uri illegal||uri={}"
,
request
.
getRequestURI
());
singleSignOn
.
setRedirectToLoginPage
(
response
);
return
false
;
}
uri
=
uri
.
replaceAll
(
"//"
,
"/"
);
if
(
uri
.
equals
(
ApiPrefix
.
API_V1_SSO_LOGIN
)
||
uri
.
equals
(
ApiPrefix
.
API_V1_SSO_LOGOUT
)
||
uri
.
startsWith
(
ApiPrefix
.
API_V1_THIRD_PART_PREFIX
)
||
uri
.
startsWith
(
ApiPrefix
.
GATEWAY_API_V1_PREFIX
))
{
if
(
classRequestMappingValue
.
equals
(
ApiPrefix
.
API_V1_SSO_PREFIX
)
||
classRequestMappingValue
.
equals
(
ApiPrefix
.
API_V1_THIRD_PART_PREFIX
)
||
classRequestMappingValue
.
equals
(
ApiPrefix
.
GATEWAY_API_V1_PREFIX
))
{
// 白名单接口直接true
return
true
;
}
...
...
kafka-manager-web/src/main/java/com/xiaojukeji/kafka/manager/web/inteceptor/PermissionInterceptor.java
浏览文件 @
cdac92ca
package
com.xiaojukeji.kafka.manager.web.inteceptor
;
import
com.xiaojukeji.kafka.manager.account.LoginService
;
import
com.xiaojukeji.kafka.manager.common.utils.ValidateUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.method.HandlerMethod
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -15,6 +20,8 @@ import javax.servlet.http.HttpServletResponse;
*/
@Component
public
class
PermissionInterceptor
implements
HandlerInterceptor
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
PermissionInterceptor
.
class
);
@Autowired
private
LoginService
loginService
;
...
...
@@ -28,6 +35,31 @@ public class PermissionInterceptor implements HandlerInterceptor {
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
return
loginService
.
checkLogin
(
request
,
response
);
String
classRequestMappingValue
=
null
;
try
{
classRequestMappingValue
=
getClassRequestMappingValue
(
handler
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"class=PermissionInterceptor||method=preHandle||uri={}||msg=parse class request-mapping failed"
,
request
.
getRequestURI
(),
e
);
}
return
loginService
.
checkLogin
(
request
,
response
,
classRequestMappingValue
);
}
private
String
getClassRequestMappingValue
(
Object
handler
)
{
RequestMapping
classRM
=
null
;
if
(
handler
instanceof
HandlerMethod
)
{
HandlerMethod
hm
=
(
HandlerMethod
)
handler
;
classRM
=
hm
.
getMethod
().
getDeclaringClass
().
getAnnotation
(
RequestMapping
.
class
);
}
else
if
(
handler
instanceof
org
.
springframework
.
web
.
servlet
.
mvc
.
Controller
)
{
org
.
springframework
.
web
.
servlet
.
mvc
.
Controller
hm
=
(
org
.
springframework
.
web
.
servlet
.
mvc
.
Controller
)
handler
;
Class
<?
extends
org
.
springframework
.
web
.
servlet
.
mvc
.
Controller
>
hmClass
=
hm
.
getClass
();
classRM
=
hmClass
.
getAnnotation
(
RequestMapping
.
class
);
}
else
{
classRM
=
handler
.
getClass
().
getAnnotation
(
RequestMapping
.
class
);
}
if
(
ValidateUtils
.
isNull
(
classRM
)
||
classRM
.
value
().
length
<
0
)
{
return
null
;
}
return
classRM
.
value
()[
0
];
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录