0
リクエストを/ DataServiceから開始する場合は、以下のGetメソッドにリダイレクトする必要があります。サーブレットフィルタは無限ループへのリクエストを転送します
フィルタの実装:
@Override
public void doFilter(final ServletRequest arg0, final ServletResponse arg1, final FilterChain filterChain)
throws IOException, ServletException {
final HttpServletRequest request = (HttpServletRequest) arg0;
final HttpServletResponse response = (HttpServletResponse) arg1;
final HttpSession session = request.getSession();
final String id = (String) session.getAttribute("id");
if ((request.getRequestURL().indexOf("/login")) < 0) {
if (id == null) {
error = "authentication required";
}
}
if (null == error) {
filterChain.doFilter(request, response); // happy flow
} else if (request.getServletPath().startsWith("/DataService")) {
// Need to redirect to one GET method
} else { // unauthorized flow
request.getRequestDispatcher("/login").forward(request, response);
}
}
方法
@RestController
@RequestMapping("/DataService")
public class DataController {
@Autowired
private DataLoaderService dataLoader;
@RequestMapping(value = "/loadAllStaticData", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public Boolean loadAllData() throws DataLoadException {
DataLoader.loadAllData();
return true;
}.
は、web.xmlファイルを使用していないDataController.IでloadAllData()メソッドにフィルタ法を行うからの要求を転送する方法を私に助けを得るとフィルタ設定のためにJava設定を使用しました。 私はスニペットの下で疲れましたが、もう一度dofilterメソッドにリダイレクトしました。
else if (request.getServletPath().startsWith("/DataService")) {
request.getRequestDispatcher(request.getServletPath()).forward();
エラー変数はどこに定義されていますか?それは何に依存していますか?これは、https://stackoverflow.com/questions/2725102/how-to-use-a-servlet-filter-in-java-to-change-an-incoming-servlet-request-urlと同様の形になります。 –
私は信じています'/ DataService/loadAllStaticData'のようなものにリダイレクトする必要があります –
@WilliamBurnham申し訳ありません。質問が更新されました。 – Ramkumar