我有一些没有web.xml的Spring RESTful(RestControllers)Web服务,我正在使用Sping Boot 启动服务。
我想为web服务添加授权层,并想在实际调用web服务本身之前将所有http请求路由到一个前端控制器。(我有一个代码来模拟认证层的会话行为,根据我从客户端发送的每个httpRequest所生成的密钥来验证用户)。
是否有任何标准的Spring解决方案将所有请求路由到过滤器/前端控制器?
先谢谢你,普兰尼斯
编辑:添加我的代码
控制器:`
@RestController
public class UserService {
UserDAO userDAO = new UserDAO();
@RequestMapping(value="/login", method = RequestMethod.POST)
@LoginRequired
public String login(@RequestParam(value="user_name") String userName, @RequestParam(value="password") String password, HttpServletRequest request){
return userDAO.login(userName, password);
}
}`
拦截器:
”
public class AuthenticationInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("In Interceptor");
//return super.preHandle(request, response, handler);
return true;
}
@Override
public void postHandle( HttpServletRequest request, HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("---method executed---");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
System.out.println("---Request Completed---");
}
}
”
接口。`
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginRequired {
}
”
6条答案
按热度按时间k2arahey1#
使用Spring实现拦截器可以采取以下步骤:
0s0u357o2#
下面是Interceptor示例:
我们可以创建一个注解:
然后在控制器上,我们有这样的注解:
这只是一个模板/例子,给予你一个想法。我希望这对你有帮助。
guykilcj3#
这类事情有一个默认的解决方案。Spring的安全你只需要实现如下内容:
它的依赖关系是:
piztneat4#
Spring5:实现应该是这样的:我们应该有一个实现HandlerInterceptor的类:
然后,我们可以通过实现WebMvcConfigureer的类注册这个拦截器,并覆盖addInterceptor方法
hrysbysz5#
你应该添加这个来注册你的拦截器
ct3nt3jp6#
如果您正在寻找Sping Boot 应用程序的简单答案..
和