有条件地弹簧负载资源

时间:2018-02-23 10:50:58

标签: javascript java spring

我想使用JS从服务器加载另一个JS文件,但我想有条件地执行它,如果请求发送的userId在我的数据库中发送回文件。 所以我想创建一个拦截器。 有没有更好的方法来做到这一点,因为拦截器会是一种过度杀伤?

<mvc:interceptors>
    <mvc:interceptor>
        <bean class="com.mycomp.webservice.UserInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

public class UserInterceptor extends HandlerInterceptorAdapter {
@Autowired
UserService userService;

@Override
@Transactional
public boolean preHandle(HttpServletRequest request,
        HttpServletResponse response, Object handler) throws Exception {

        if(!userService.userPresent(request)){

            return false;
        }   
        else{
            return true;
        }

}

编辑:所以我发现问题不是那么清楚。我想上传的文件是静态资源的一部分,所以我不想只是将它加载到客户端,我也想缓存它。 所以我给你留下了a link

编辑2:所以这就是我最终要做的事情。在我的mvc-resources配置下,我创建了一个拦截器来处理受保护静态资源的请求。

    <mvc:resources mapping="/static/**" location="/static/" />
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/static/protected/**" />
        <bean class="com.mycompany.interceptor.ProtectedResourcesInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

public class ProtectedResourcesInterceptor extends HandlerInterceptorAdapter {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
        throws Exception {
    if("your condition is true") {
        System.out.println("Access Granted to protected resources");
        return true;
    }

    return false;
}

}

拦截器将处理对/ static / protected的请求,如果条件合适,它将为其提供服务。如果有人有更清洁的解决方案,请分享。

0 个答案:

没有答案