在atlassian-plugin.xml中添加
<servlet-filter name="Search by admin Filter" key="searchByAdminFilter"
class="cn.xx.SearchByAdminFilter" location="before-decoration" weight="200">
<url-pattern>/rest/searchv3/1.0/cqlSearch*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</servlet-filter>
新建SearchByAdminFilter
package cn.xx.filter;
import com.atlassian.confluence.user.AuthenticatedUserThreadLocal;
import com.atlassian.confluence.user.persistence.dao.ConfluenceUserDao;
import com.atlassian.plugin.spring.scanner.annotation.component.Scanned;
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.*;
import java.io.IOException;
@Scanned
@Named("searchByAdminFilter")
public class SearchByAdminFilter implements Filter {
private ConfluenceUserDao dao;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Inject
public SearchByAdminFilter(@ComponentImport ConfluenceUserDao dao) {
this.dao = dao;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
try {
AuthenticatedUserThreadLocal.set(this.dao.findByUsername("xxxx")); //拥有最大权限账号的username
} catch (Exception e) {
e.printStackTrace();
}
filterChain.doFilter((ServletRequest) servletRequest, (ServletResponse) servletResponse);
}
@Override
public void destroy() {
}
}