У меня есть старое приложение, написанное на Struts 1. Единственная функция, которую мне было предложено добавить, - это защита некоторых действий. В настоящее время любой пользователь может делать все, что он хочет. Идея состоит в том, чтобы позволить всем пользователям видеть данные, но блокировать операцию модификации, то есть изменять данные, в которые пользователь должен войти.
Я знаю, что в Struts2 есть перехватчики, поэтому я могу присоединить их к требуемым действиям и при необходимости переадресовывать пользователей на страницу входа. Но как я могу сделать подобное в приложении Struts 1?
Моей первой идеей было создать собственный абстрактный класс Action:
public class AuthenticatedAction {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest theRequest,
HttpServletResponse theResponse) {
if (!logged) {
// forward to log in form
} else {
doExecute(mapping, form, request, response);
}
}
public abstract ActionForward doExecute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest theRequest,
HttpServletResponse theResponse);
}
Затем измените все действия, требующие аутентификации, с
extends Action
до
extends AuthenticatedAction
затем добавьте форму входа в систему, действие входа в систему (которое выполняет аутентификацию и помещает этот статус в сеанс) и измените плитку заголовка JSP для отображения блока аутентификации, например, «Вы (не авторизованы) /», «Вход / выход из системы». Как я полагаю, это должно решить проблему.
- Если это не решит проблему, объясните, пожалуйста, почему.
- Есть ли лучший (более элегантный, как перехватчики) способ сделать это?
Заранее спасибо.