Spring mvc 如何在SpringMVCwebApplication上对每个.jsp页面执行许可证检查?
我们正在用SpringMVC和基于rest的组件开发一个web应用程序。我们已经使用spring安全性实现了身份验证。现在,此产品应使用有效的许可证运行。此实现已完成,在webapp启动之前,我们将进行此检查,以查看产品是否获得许可。如果没有,用户可以上传许可文件,并开始使用该产品 一旦他们开始使用该产品,比如说几天后许可证可能过期(当然,启动服务器会发现这一点,但如果没有服务器重新启动,那么他们可以在过期后愉快地使用)。因此,我希望对每个请求进行检查,检查产品是否获得许可(就像isAuthenticated()一样)。如果未经验证,我可以重定向到许可证上载页面 如有任何想法/建议,我们将不胜感激Spring mvc 如何在SpringMVCwebApplication上对每个.jsp页面执行许可证检查?,spring-mvc,spring-security,Spring Mvc,Spring Security,我们正在用SpringMVC和基于rest的组件开发一个web应用程序。我们已经使用spring安全性实现了身份验证。现在,此产品应使用有效的许可证运行。此实现已完成,在webapp启动之前,我们将进行此检查,以查看产品是否获得许可。如果没有,用户可以上传许可文件,并开始使用该产品 一旦他们开始使用该产品,比如说几天后许可证可能过期(当然,启动服务器会发现这一点,但如果没有服务器重新启动,那么他们可以在过期后愉快地使用)。因此,我希望对每个请求进行检查,检查产品是否获得许可(就像isAuthen
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<beans:bean id="mySuccessHandler" class="com.cavirin.security.MySavedRequestAwareAuthenticationSuccessHandler" />
<authentication-manager alias="authenticationManager">
<authentication-provider ref="localAuthenticationProvider" />
</authentication-manager>
<http auto-config="true" use-expressions="true">
<request-cache ref="authenticationRequestCache" />
<form-login login-page="/"
authentication-success-handler-ref="successHandler"
authentication-failure-url="/rest/login/reAuthenticate" />
<intercept-url pattern="/rest/**" access="isAuthenticated()" />
</http>
<beans:bean id="successHandler"
class="com.cavirin.security.MySavedRequestAwareAuthenticationSuccessHandler">
<beans:property name="defaultTargetUrl" value="/rest/login/checkUser" />
</beans:bean>
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
要检查每个请求,您可以在应用程序中添加一个过滤器。但是,对于那些正在做一些事情的用户来说,当他们被重定向到许可证页面时,这将是非常恼人的。它似乎也相当低效。作为替代方案,您可以添加一个身份验证提供程序
,它只会在有人登录时进行检查,否则会拒绝身份验证。在身份验证之前,我们会检查有效许可。对正如您所提到的,这可能是低效的,但我想添加这一点,以避免在登录后许可证到期后过度使用产品。您能告诉我如何添加另一个过滤器吗。由于我已经使用了“DelegatingFilterProxy”,所以用很少的代码片段编辑了我的问题。我添加了一个过滤器(公共类LicenseCheckFilter实现了过滤器{…},但如何抛出自定义异常,例如LicenseExpiredException?如果确实需要委托给SpringBean,则可以使用多个DelegatingFilterProxy
实例。或者,您可以将其作为标准筛选器添加到web.xml
中。我不明白为什么需要异常-只需从筛选器重定向即可。我需要红色直接转到许可证上载页面,并显示一条消息“许可证已过期”(-LicenseExpiredException),因此只需使用要转到的URL调用redirect即可。这样做不需要抛出实际的Java异常。