Как бороться с org.jboss.seam.security.NotLoggedInException?

#angular #seam

#angular #шов

Вопрос:

У меня есть приложение, работающее с фреймворками Angular, rest и seam. У меня есть 2 типа пользователя: 1 обычный пользователь, а второй — администратор. Когда я вхожу в систему с обычным пользователем, все работает нормально, когда я вхожу в систему с помощью администратора, логин работает нормально, но при вызове rest api я получаю это исключение на стороне сервера: org.jboss.seam.security.NotLoggedInException

У меня есть текущий код:

Код при входе пользователя в систему:

 @Out(required=true, scope=ScopeType.SESSION)
    private User user;
    
    public AccountFacadeREST() {
    }

@GET
    @Path("Authenticate")
    @Produces("application/json")   
    @Transactional
    public User authenticatie(@QueryParam("username") String username, @QueryParam("password") String password) {
        user = userDao.getUser(username);
        if (user != null) {
            passwordSupport.setPassword(password);      
            user = userDao.authenticatie(username, passwordSupport.getPasswordHash(user.getUserName()));            
        }
        return user;
    }
 

Код, в котором действие запускается из приложения Angular через rest api:

 @PUT
    @Path("CreateExcel")
    @Consumes("application/json")   
    public Response createsExcel(User adminUser) {      
        adminSupport.createExcel();
        return Response.ok().entity("excel created successfully").build();
    }
 

Ошибка:

 javax.servlet.ServletException: org.jboss.resteasy.spi.UnhandledException: org.jboss.seam.security.NotLoggedInException
    at org.jboss.seam.servlet.ContextualHttpServletRequest.run(ContextualHttpServletRequest.java:74)
    at org.jboss.seam.resteasy.ResteasyResourceAdapter.getResource(ResteasyResourceAdapter.java:121)
    at org.jboss.seam.servlet.SeamResourceServlet.service(SeamResourceServlet.java:80)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at com.funder.filters.CorsFilter.doFilter(CorsFilter.java:26)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
    at org.jboss.seam.web.RewriteFilter.doFilter(RewriteFilter.java:63)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
    at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
    at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
    at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
 

Есть идеи, как решить эту проблему?

Ответ №1:

в вашем pages.xml вы можете изменить уровень журнала :

 <exception class="org.jboss.seam.security.NotLoggedInException" logLevel="info">

</exception>
 

Или подавить все протоколирование исключения:

 <exception class="org.jboss.seam.security.NotLoggedInException" log="false">

</exception>
 

Комментарии:

1. Я все еще получаю исключение. Seam не позволяет мне получить доступ к методу. и это произошло только тогда, когда я вошел в систему как администратор. обычный пользователь работает нормально.