- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将 HDIV 与基于 Spring Java 配置的 Spring MVC 结合使用,该配置是我从他们的展示实现中派生出来的。配置已加载,但当我尝试访问 protected URL(即“/messages/message”)时,我总是收到未经授权的访问错误 HDIV_PARAMETER_DOES_NOT_EXIST。当我更改配置以从 HDIV 处理中排除 URL 时,它可以工作,但这当然不是一个选项
有人知道我错过了什么吗?
日志文件错误声明
10:04:17.304 [http-nio-8080-exec-22] INFO org.hdiv.logs.Logger - HDIV_PARAMETER_DOES_NOT_EXIST;/spring-security-example/messages/message;_HDIV_STATE_;;;127.0.0.1;127.0.0.1;megloff;
Java配置
@Configuration
@EnableHdivWebSecurity
public class HdivSecurityConfig extends HdivWebSecurityConfigurerAdapter {
@Override
public void configure(SecurityConfigBuilder builder) {
}
@Override
public void addExclusions(ExclusionRegistry registry) {
registry.addUrlExclusions("/").method("GET");
registry.addUrlExclusions("/login");
registry.addUrlExclusions("/logout");
registry.addUrlExclusions("/static/.*");
registry.addParamExclusions("_csrf");
// registry.addUrlExclusions("/messages/.*"); <-- would allow access, but not an option
}
@Override
public void configureEditableValidation(ValidationConfigurer validationConfigurer) {
validationConfigurer.addValidation("/messages/.*");
validationConfigurer.addValidation("/addUser");
}
}
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {
"ch.megloff.spring.security.example.mvc.controller",
"ch.megloff.spring.security.example.mvc.action",
"ch.megloff.spring.security.example.repository",
"ch.megloff.spring.security.example.listener",
"ch.megloff.spring.security.example.service"})
public class SpringMVCConfiguration extends WebMvcConfigurerAdapter {
@Autowired
@Qualifier("hdivEditableValidator")
private Validator hdivEditableValidator;
@Override
public Validator getValidator() {
return hdivEditableValidator;
}
...
}
public class SpringWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { SpringMVCConfiguration.class, SpringHibernateConfig.class, SpringSecurityConfiguration.class, SpringSecurityJDBCConfiguration.class, SpringWebFlowConfig.class, HdivSecurityConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { SpringMVCConfiguration.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
public void onStartup(ServletContext container) throws ServletException {
super.onStartup(container);
container.addFilter("ValidatorFilter", ValidatorFilter.class).addMappingForUrlPatterns(
EnumSet.of(DispatcherType.REQUEST), false, "/*");
container.addListener(new InitListener());
}
}
最佳答案
我找到了解决方案。 HDIV 要求所有链接在其 URL 中添加“_HDIV_STATE_”参数。为了实现这一点,您必须使用 HDIV 中的 taglib,而不是原始的 JSTL taglib。
另请参阅reference documentation关于 JSTL 的 HDIV
例如在你的 POM 中
<dependency>
<groupId>org.hdiv</groupId>
<artifactId>hdiv-jstl-taglibs-1.2</artifactId>
<version>${org.hdiv-version}</version>
</dependency>
例如在您的 JSP 中(注意 taglib 语句中的“www.hdiv.org”)
<%@ taglib prefix="c" uri="http://www.hdiv.org/jsp/jstl/core"%>
<c:url value="/messages/messages" var="url" />
<li><a href="${url}">Messages</a></li>
因此您需要通过 <c:url>
呈现 URL实用程序标签。这将呈现带有所需 HDIV 参数的 URL,即
localhost:8080/spring-security-example/messages/message?_HDIV_STATE_=26-0-830046F08D66980D1B35F52F2D6677E0
另一个选择可能是使用 HDIV 中的实用程序类参见类(class)LinkUrlProcessor在 hdiv 的 github 存储库
LinkUrlProcessor urlProcessor = HDIVUtil.getLinkUrlProcessor(servletContext);
String processUrl = urlProcessor.processUrl(request, "/messages/messages");
关于java - HDIV + Spring MVC - 总是出现未经授权的访问错误 HDIV_PARAMETER_DOES_NOT_EXIST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44452699/
我正在 Spring MVC 中实现 HDIV,但在登录页面中遇到问题。由于 HDIV 需要使用 form标签 (如:),我的应用程序会抛出异常,因为我没有指定 modelAttribute : ja
我正在尝试更改来自 MessageResources.properties 的通用 hdiv 验证消息: hdiv.editable.error={0} has not allowed charact
我正在使用HDIV用于 Java Web 应用程序的 Web 应用程序安全框架。每个新的网页请求都会生成 hdiv 内部安全信息,这些信息会被缓存并用于安全检查。 我有以下场景: 我有一个订单页面,当
我正在尝试通过使用 struts 1.3.8 的应用程序来实现 HDIV。我已经在pom文件和监听器中添加了依赖项,在web.xml文件中添加了过滤器。 token _HDIV_STATE_ 被注入(
我使用 Spring MVC v3.1.0 和 HDIV(HTTP 数据完整性 validator )v2.1.0 作为服务器端框架,使用 ExtJS v4.0 作为客户端框架。 现在,我很困惑如何生
我正在将 HDIV 与基于 Spring Java 配置的 Spring MVC 结合使用,该配置是我从他们的展示实现中派生出来的。配置已加载,但当我尝试访问 protected URL(即“/mes
我们有一个在 tomcat 6 中运行并试图与 HDIV 集成的遗留 Web 应用程序(由 5 个模块组成)。用户将从模块 1 进行身份验证,为 session token 创建一个 cookie,并
我正在使用 EL 值填充选择元素并遇到问题 当我在 hdiv-config.xml 中更改配置confidentiality=“true”时,它会给出
我有一个 Java Restful 应用程序,它使用 Jersey 进行 API 实现,并使用 Spring 进行 DI。我现在正在尝试集成 HDIV 以确保安全。 但是官方文档有与 Spring M
我是一名优秀的程序员,十分优秀!