我想让我的webapp许可证受到保护。当请求webapp的任何页面/资源时,我想首先检查许可证。如果没有找到许可证,我想重定向到许可证上传页面。Java:授权webapp。在登录前检查许可证
我已经创建了一个映射到所有请求的过滤器,我可以检查许可证并在必要时重定向。 问题是我的web应用程序有登录验证的安全限制。 请参阅最后的web.xml以获取更多信息。
由于安全约束,所有的请求首先被登录验证拦截,然后转发到我的过滤器。但是,我想在登录发生之前检查许可证。
这是我问的一个相关问题。
Java : Intercept all requests before they go to login authentication
在安全性约束优先处理过滤器似乎是不可能的。所以,我想问一下,有没有其他方法可以处理这个用例?
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Tango</display-name>
<filter>
<filter-name>SalsaValidationFilter</filter-name>
<filter-class>net.semandex.salsa.validationFilters.SalsaValidationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SalsaValidationFilter</filter-name>
<url-pattern>/*</url-pattern>
<!-- <servlet-name>SalsaValidationServlet</servlet-name> -->
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<session-config>
<session-timeout>20</session-timeout>
</session-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Login page images</web-resource-name>
<url-pattern>/images/salsadb-logo2.png</url-pattern>
<url-pattern>/images/salsa-icon.png</url-pattern>
<url-pattern>/images/shadow_box.png</url-pattern>
<url-pattern>/images/header.png</url-pattern>
<url-pattern>/images/bg.png</url-pattern>
<url-pattern>/css/splash.css</url-pattern>
<url-pattern>/WEB-INF/licenseValidation.html</url-pattern>
<url-pattern>/auth/licenseValidation.html</url-pattern>
</web-resource-collection>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>The entire webapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>SalsaUser</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>SalsaUser</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/auth/login.jsp</form-login-page>
<form-error-page>/auth/loginError.jsp</form-error-page>
</form-login-config>
<realm-name>mongo_login</realm-name>
</login-config>
</web-app>
这不是我用过的东西,但我想知道JACC是否是解决您的问题的方法?我相信它是安全约束过程的钩子。我发现它在[this SO question]中引用(http://stackoverflow.com/questions/17654020/precedence-of-security-constraint-over-filters-in-servlets),它向你提出了类似的问题,并且它链接到[此博客文章](http://arjan-tijms.omnifaces.org/2014/03/implementing-container-authorization-in.html)。 – DaveyDaveDave