Wicket AjaxFormComponentUpdatingBehavior Spring 安全性
Wicket AjaxFormComponentUpdatingBehavior Spring Security
我的组件 AjaxFormComponentUpdatingBehavior
有问题。
当我将此组件添加到主页时,springs 安全性启用授权,作为受保护的页面。当我从页面中删除这个组件时,一切都会好起来。
My UNSECURED_RESOURCE_LIST "/resources/", "/assets/", "/css/",
"/fonts/", "/webjars/", "/img/", "/js/**".
这是我的 wicket 页面,正如您在我添加 AjaxFormComponentUpdatingBehavior 组件时看到的那样,spring 安全启用授权。
public class FrontPage extends WebPage {
private List<Language> languages = Arrays.asList(Language.RUSSIAN,
Language.ENGLISH);
private Language language = Language.RUSSIAN;
private DropDownChoice languagesDD;
public FrontPage() {
languagesDD = new DropDownChoice<String>("languages", new
PropertyModel(FrontPage.this, "language"), new
PropertyModel(FrontPage.this, "languages"), new ChoiceRenderer() {
@Override
public Object getDisplayValue(Object object) {
Language language = (Language) object;
if (Language.RUSSIAN.equals(language)) {
return getString("Language.RUSSIAN");
} else if (Language.ENGLISH.equals(language)) {
return getString("Language.ENGLISH");
}
return super.getDisplayValue(object);
}
});
add(languagesDD);
languagesDD.add(new AjaxFormComponentUpdatingBehavior("change") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
//iWebSession().setLocaleString(language.getCode());
//setResponsePage(FrontPage.class);
}
});
}
}
当我评论这个组件时。一切都变得OK。
我猜想也许 AjaxFormComponentUpdatingBehavior 组件正在尝试使用受保护区域中的资源。
我将资源添加到非安全列表中。
所以我无法理解为什么 spring 在我添加 AjaxFormComponentUpdatingBehavior 组件时启用授权。
public class FrontPage extends WebPage {
private List<Language> languages = Arrays.asList(Language.RUSSIAN,
Language.ENGLISH);
private Language language = Language.RUSSIAN;
private DropDownChoice languagesDD;
public FrontPage() {
languagesDD = new DropDownChoice<String>("languages", new PropertyModel(FrontPage.this, "language"), new PropertyModel(FrontPage.this, "languages"), new ChoiceRenderer() {
@Override
public Object getDisplayValue(Object object) {
Language language = (Language) object;
if (Language.RUSSIAN.equals(language)) {
return getString("Language.RUSSIAN");
} else if (Language.ENGLISH.equals(language)) {
return getString("Language.ENGLISH");
}
return super.getDisplayValue(object);
}
});
add(languagesDD);
// languagesDD.add(new AjaxFormComponentUpdatingBehavior("change") {
// @Override
// protected void onUpdate(AjaxRequestTarget target) {
// //iWebSession().setLocaleString(language.getCode());
// //setResponsePage(FrontPage.class);
// }
// });
}
}
好的,我找到了解决办法。
只需将“/wicket/**”添加到您的不安全资源列表中即可。
我的组件 AjaxFormComponentUpdatingBehavior
有问题。
当我将此组件添加到主页时,springs 安全性启用授权,作为受保护的页面。当我从页面中删除这个组件时,一切都会好起来。
My UNSECURED_RESOURCE_LIST "/resources/", "/assets/", "/css/", "/fonts/", "/webjars/", "/img/", "/js/**".
这是我的 wicket 页面,正如您在我添加 AjaxFormComponentUpdatingBehavior 组件时看到的那样,spring 安全启用授权。
public class FrontPage extends WebPage {
private List<Language> languages = Arrays.asList(Language.RUSSIAN,
Language.ENGLISH);
private Language language = Language.RUSSIAN;
private DropDownChoice languagesDD;
public FrontPage() {
languagesDD = new DropDownChoice<String>("languages", new
PropertyModel(FrontPage.this, "language"), new
PropertyModel(FrontPage.this, "languages"), new ChoiceRenderer() {
@Override
public Object getDisplayValue(Object object) {
Language language = (Language) object;
if (Language.RUSSIAN.equals(language)) {
return getString("Language.RUSSIAN");
} else if (Language.ENGLISH.equals(language)) {
return getString("Language.ENGLISH");
}
return super.getDisplayValue(object);
}
});
add(languagesDD);
languagesDD.add(new AjaxFormComponentUpdatingBehavior("change") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
//iWebSession().setLocaleString(language.getCode());
//setResponsePage(FrontPage.class);
}
});
}
}
当我评论这个组件时。一切都变得OK。 我猜想也许 AjaxFormComponentUpdatingBehavior 组件正在尝试使用受保护区域中的资源。 我将资源添加到非安全列表中。 所以我无法理解为什么 spring 在我添加 AjaxFormComponentUpdatingBehavior 组件时启用授权。
public class FrontPage extends WebPage {
private List<Language> languages = Arrays.asList(Language.RUSSIAN,
Language.ENGLISH);
private Language language = Language.RUSSIAN;
private DropDownChoice languagesDD;
public FrontPage() {
languagesDD = new DropDownChoice<String>("languages", new PropertyModel(FrontPage.this, "language"), new PropertyModel(FrontPage.this, "languages"), new ChoiceRenderer() {
@Override
public Object getDisplayValue(Object object) {
Language language = (Language) object;
if (Language.RUSSIAN.equals(language)) {
return getString("Language.RUSSIAN");
} else if (Language.ENGLISH.equals(language)) {
return getString("Language.ENGLISH");
}
return super.getDisplayValue(object);
}
});
add(languagesDD);
// languagesDD.add(new AjaxFormComponentUpdatingBehavior("change") {
// @Override
// protected void onUpdate(AjaxRequestTarget target) {
// //iWebSession().setLocaleString(language.getCode());
// //setResponsePage(FrontPage.class);
// }
// });
}
}
好的,我找到了解决办法。 只需将“/wicket/**”添加到您的不安全资源列表中即可。