【发布时间】:2016-11-16 13:05:04
【问题描述】:
我有一些没有 web.xml 的 Spring RESTful (RestControllers) Web 服务,我正在使用 Spring 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 {
}
`
【问题讨论】:
-
在请求头中设置tocken或ID并验证。
标签: spring-mvc spring-restcontroller spring-rest