Bom dia Pessoal,
Estou desenvolvendo um helpdesk web usando struts e estou travado na permissão de acesso.
Meu sistema tem dois tipos de usuários ( administradores e usuários ) , se for administrador é igual a 1 no BD e usuário 0, preciso colocar o login na session
e quando o usuário logar verificar se a permissão e igual a 1 se for ele acessa qualquer pagina senão ele só acessa a de usuário.
Filter …
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
//Abre uma session !
HttpSession session = req.getSession();
session.getAttribute("checkLogin");
Login login = (Login) session.getAttribute("checkLogin");
if(login.getPermissao() == 0){
//Força da o erro 401.
resp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
//A pagina de usuario nao esta dentro do filter no web.xml entao se for 0 ele vai da erro so quando tentar acessar a pagina de admin.
}
chain.doFilter(request, response);
}
Action.
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginForm formulario = (LoginForm) form;
Login login = formulario.getLogin();
HttpSession session = request.getSession();
session.setAttribute("checkLogin", login);
return mapping.findForward("login");
Form que verifica se os campos estão preenchidos e se o usuário existe no BD (existeUsuario).
public class LoginForm extends ActionForm {
private Login login = new Login();
public Login getLogin() throws SQLException {
return login;
}
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors erros = new ActionErrors();
try {
if (login.getUsuario() == null || login.getUsuario().equals("")) {
erros.add("nome", new ActionMessage("erro.campoNome"));
}
else if (login.getSenha() == null || login.getSenha().equals("")) {
erros.add("senha", new ActionMessage("erro.campoSenha"));
}
else if (!new chamadoDao().existeUsuario(login)) {
erros.add("naoexiste", new ActionMessage("erro.naoexiste"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return erros;
}
Estou online se precisar de mais informações sobre o sistema.
Desde já agradeço …
Carlos