powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Servlet Filter User Authentication
8 сообщений из 8, страница 1 из 1
Servlet Filter User Authentication
    #38551242
botasa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сижу уже 2-й день наверно уже часов 10 в суме над этим фильтром .. уже борода отросла ... тупо не идет мне ... стоит простая до ужаса задача : Авторизация Юзера ... то есть, он может доступатся до любой страницы, если он авторезирован, авторизация простая, тупо правда смотриться надо логин + пасс, но я пока делала другое и у меня имя и возраст, но это не главное ...
По логике идет вот так : фильм фильтрирует запросы, если в сесии есть ИД юзера, в которого ввод из формы имени и возраста совпадает с данными из БД, он авторезирован и ИД я заношу в СЕСИЮ, але нет, юзер должен ввести данные и т.д.

Проблема : код криво работает ... где то есть логическая ошибка, но как ее выправить я не знаю .. ХЕЛП
П.С. знаю, нормальные люди пишут в ЛОГГЕР, но мне нравится писать в консоль, пока она еще есть хДДД и куча гадости написано лишней, но это удалю, когда заработает ...


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		System.out.println("Start Filter");
		HttpServletRequest httpServletRequest = (HttpServletRequest) request;
		HttpServletResponse servletResponse = (HttpServletResponse) response;
		HttpSession httpSession = httpServletRequest.getSession(false);
		System.out.println(httpSession == null);

		//Integer id = null;
		if (httpSession != null) {
			Integer id = (Integer) httpSession.getAttribute("id");
			if (id == null || id.equals("-1")) {
				System.out.println("filter 1");
				httpServletRequest.getServletContext()
						.getRequestDispatcher("/LoginServlet")
						.forward(request, response);
				//servletResponse.sendRedirect("/IndexServlet");
			} else {
				System.out.println("else bladstvo glychene");
				//chain.doFilter(request, response);
				servletResponse.sendRedirect(httpServletRequest.getRequestURI());
			}/*
			 * else { httpServletRequest.getServletContext()
			 * .getRequestDispatcher("/IndexServlet") .forward(request,
			 * response); }
			 */
		} else {
			System.out.println("filter 2");
			//System.out.println(id);
			System.out.println(httpServletRequest.getRequestURI());
			httpServletRequest.getServletContext()
					.getRequestDispatcher("/LoginServlet")
					.forward(request, response);
			// httpServletRequest.getRequestURI();
		}
		System.out.println("Stop Filter");
	}



protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
}

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String pname = request.getParameter("name");
		String page = request.getParameter("age");
		HttpSession httpSession = request.getSession();
		try {
			int age = Integer.parseInt(page);
			int id = new StudentDAOImpl().getStudentId(pname, age);
			httpSession.setAttribute("id", id);
			//return;
		} catch(NumberFormatException e) {
			getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
		}
		System.out.println("end login");
		//request.getServletContext().getRequestDispatcher("/IndexServlet").forward(request, response);
		//response.sendRedirect("/IndexServlet");
		//getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
...
Рейтинг: 0 / 0
Servlet Filter User Authentication
    #38551279
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то я не вижу что там что-то в бд проверяется азаза eBIND X-DDDDDDDDDDDDDDD
...
Рейтинг: 0 / 0
Servlet Filter User Authentication
    #38551281
botasa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман,

int id = new StudentDAOImpl().getStudentId(pname, age);

если -1 то не совпало, если больше 0, любое число, там автоинкремент, то совпало ... тупо сделано, но оно так работает 100 %
...
Рейтинг: 0 / 0
Servlet Filter User Authentication
    #38551290
botasa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробую переписать немного, что бы было ясно, но у меня уже пена с рота идет ... задрало это закыцлевание ...

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
		System.out.println("Start Filter");
		HttpServletRequest httpServletRequest = (HttpServletRequest) request;
		HttpServletResponse httpServletResponse = (HttpServletResponse) response;
		HttpSession httpSession = httpServletRequest.getSession(false);
		System.out.println(httpSession == null);

		if (httpSession == null) {
			System.out.println("session == null");
			httpServletRequest.getServletContext()
					.getRequestDispatcher("/LoginServlet")
					.forward(request, response);
		} else {
			System.out.println("session != null");
			Integer id = (Integer) httpSession.getAttribute("id");
			System.out.println("id = " + id);
			if(id == null || id.equals(-1)) {
				System.out.println("id == null");
				System.out.println("id == -1");
				httpServletRequest.getServletContext()
				.getRequestDispatcher("/LoginServlet")
				.forward(request, response);
			} else {
// ТУТ ВСЕ РАБОТЕТ КРИВО как я понимаю, зацыклевание долбаное идет постоянно на одну и туже ссылку ...
				System.out.println(httpServletRequest.getRequestURI());
				httpServletResponse.sendRedirect(httpServletRequest.getRequestURI());
				/*httpServletRequest.getServletContext()
				.getRequestDispatcher("/IndexServlet")         
				.forward(request, response);*/
			}
...
Рейтинг: 0 / 0
Servlet Filter User Authentication
    #38551299
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я немного не так сделал (не помню как там с сесией, и редирект не вышел, но идея должна быть понятна)
на како-то этапе есть активный юзер в сервлете, у меня он сразу в ините, и если юзер "правильный", то ему позволено хоть куда, иначе - на страницу логина
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
package com.example;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class ControlServlet extends HttpServlet {

	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		getServletContext().setAttribute("user", "u11"); // suppose u1 is active and other value is inactive
	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		
		String allow = null;
		try {
			allow = (String) request.getAttribute("allow");
			System.out.println("allow = " + allow);
		} catch (Exception e) {
			System.out.println("allow is empty!");
		}
		
		if(allow != null) {
			if(allow.equals("true")) {
				out.println("this is TARGET page");
				out.println("<br>");
			}
		} else {
			out.println("this is LOGIN page");
			out.println("<br>");
		}	
		
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
package com.example;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class controlFilter implements Filter {

	@Override
	public void destroy() {	
	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
		
		String user = null;
		try {
			user = (String) req.getServletContext().getAttribute("user");
		} catch (Exception e) {
			System.out.println("user is empty");
		}
		if(user != null) {
			if(user.equals("u1")) {
				System.out.println("current user: u1");
				System.out.println("set allow = true");
				req.setAttribute("allow", "true");
			}
		}
	    chain.doFilter(req, res);
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
	}

}
...
Рейтинг: 0 / 0
Servlet Filter User Authentication
    #38551309
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ну так понятно, редирект сам на себя безусловен, надо снять этот фильтр с пути на который редиректится

- Мам, у папы в роте
- Не в роте, а во рту!
- У папы во рту солдат повесился!
...
Рейтинг: 0 / 0
Servlet Filter User Authentication
    #38551323
botasa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагман,

как это сделать то ?))) мне потом надо будет еще подобное делать, только ставить Роль - админ или юзер и куда кто может доступатся ....
...
Рейтинг: 0 / 0
Servlet Filter User Authentication
    #38551332
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то типа такого http://www.xinotes.org/notes/note/1024/

Код: java
1.
2.
3.
4.
5.
	String url = request.getRequestURL().toString();
	if (matchExcludePatterns(url)) {
	    chain.doFilter(request, response);
	    return;
	}
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Servlet Filter User Authentication
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]