Я новичок в Spring mvc, я работаю над панелью администрирования веб-проекта.Spring MVC - метод вызова на каждой странице администратора
Вот несколько примеров из моих администратора страниц контроллеров:
@Controller
@RequestMapping("/admin/article/**")
public class ArticleController {
private ArticleDao articleDao;
private String fileName;
private String baseUrl;
public ArticleController() {
articleDao = ArticleDaoFactory.create();
}
@RequestMapping(value = "/admin/article",method = RequestMethod.GET)
public String doGet(ModelMap model,HttpServletRequest request,ArticleForm articleForm) {
//some codes
}
@RequestMapping(value = "/admin/article/add",method = RequestMethod.GET)
public String doGetAdd(ModelMap model,ArticleForm articleForm) {
model.addAttribute("article", articleForm);
return "admin/articleAdd";
}
@RequestMapping(value = "/admin/article/add",method = RequestMethod.POST)
public String doPost(@ModelAttribute ArticleForm article, BindingResult result ,ModelMap model){
//some codes
}
@RequestMapping(value = "/admin/article/edit/{id}",method = RequestMethod.GET)
public String getEdit(ModelMap model, @PathVariable("id") int id) {
//some codes
}
@RequestMapping(value = "/admin/article/edit/{id}",method = RequestMethod.POST)
public String postEdit(ModelMap model, @PathVariable("id") int id, ArticleForm article, BindingResult result) {
//some codes
}
@RequestMapping(value = "/admin/article/delete/{id}",method = RequestMethod.GET)
public void getDelete(ModelMap model, @PathVariable("id") int id, HttpServletResponse response) {
//some codes
}
}
теперь мне нужно другое отображение в другом-регулятора с именем AdminController (например) для аутентификации администратора и вернуть его на страницу входа, если он не вошел в систему . Конечно, Authenthication - один из примеров, я мог бы использовать больше классов на каждой странице администратора.
Обратите внимание, что мои потребности класса authenthication запрашивать и ссылки сессии (и уверен, что мои другие классы будут нужны другие ссылки, созданные весной)
Я должен знать, что я не могу получить HttpServletRequest и ... с помощью конструктора поэтому я написал другое сопоставление запроса для вызова метода.
Eventough Я могу настроить свои свойства таким образом, но я не могу использовать этот метод для каждого URL-адреса администратора.
@Controller
@RequestMapping(value = "/admin/**",method = RequestMethod.GET)
public class AdminController {
Authentication authentication;
HttpServletRequest request;
HttpSession session;
HttpServletResponse response;
public void checkAndSet(HttpSession session,HttpServletRequest request,HttpServletResponse response) {
authentication = new Authentication(session,request);
this.request = request;
this.session = session;
this.response = response;
if(!authentication.isLoggedIn()){
System.out.println(" I'm not logged in");
response.setHeader("Location","/admin/login");
}
}
Так что мне нужно несколько предложений о том, как написать отображение запроса в контроллере для вызова метода на каждых других контроллерах, которые «админы» страница ребенок?
FYI: Я не думаю о весенней безопасности для этого.
thanks;
Согласен с Spring Security. Поскольку SpringMVC используется во всех случаях, HandlerInterceptors (http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/mvc.html#mvc-handlermapping-interceptor) может быть другим вариантом (но не для безопасности!). – jny
Спасибо за отличный ответ и совет. Я должен отметить, что, как я уже упоминал, мне может понадобиться нечто большее, чем весенняя безопасность или аутентификация по умолчанию. Если я не ошибаюсь, я должен написать метод в том же классе с именем 'isAdminUrl', чтобы проверить, введен ли url в url. –
Ну, я подумал, как с этим работать. Спасибо :) –