gpt4 book ai didi

java - 向 Spring MVC 拦截器添加参数

转载 作者:太空宇宙 更新时间:2023-11-04 06:13:57 24 4
gpt4 key购买 nike

我试图通过让 Spring 的 Interceptor (HandlerInterceptorAdapter) PreHandle 方法在作用域命中 Controller 中请求的操作之前检查用户是否处于所需角色来实现 RestAPI 的授权。但是,这要求我为每个操作(URL 路径)提供其所需的角色 ID。这是我当前的设置:

public class AuthorizationInterceptor extends HandlerInterceptorAdapter{

@Autowired
IUserService us;

//before the actual handler will be executed
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler, Integer roleId)
throws Exception {

String userId = request.getHeader("UserId");

if(!us.isUserInRole(Long.parseLong(userId), roleId))
return false;

return true;


}

}

以及 servlet-context.xml(的一部分):

<interceptors>
<interceptor>
<mapping path="/" />
<mapping path="/users/**" />
<beans:bean class="com.lumi.api.interceptors.AuthorizationInterceptor"></beans:bean>
</interceptor>
</interceptors>

我的问题是,我是否可以在 servlet-context 配置中使用 bean 传递参数 roleId 。我似乎在文档中找不到任何内容。我想我曾经见过类似的东西:

<mapping path="/" />
<parameter name="something" value="some value">

但我不确定。

最佳答案

您可以简单地使用标准 spring sintax 设置属性,例如

<beans:bean class="com.lumi.api.interceptors.AuthorizationInterceptor">
<beans:property name="roleId" value="REGISTERED_USER"/>
</beans:bean>

你的拦截器当然应该包含该属性,所以简单

public class AuthorizationInterceptor extends HandlerInterceptorAdapter{

private String roleId;

public String getRoleId() {
return roleId;
}

public void setRoleId(String roleId) {
this.roleId = roleId;
}

// The rest of your code
}

关于java - 向 Spring MVC 拦截器添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28345325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com