我必须使用@PreAuthorize批注保护我的RequestMethod.GET。 但是,一旦我尝试保护它的安全,每个人都将无法连接到已保护安全的站点。
这是我的错误消息:
2018-10-20 01:32:35信息a.wrk.web.LoggingAccessDeniedHandler-ADMIN试图访问受保护的资源:/ lagerstandortupdate / 1
除了注释我的方法,在启动Spring Boot时会自动创建一个用户和一些角色。 我使用了import.sql文件
INSERT INTO rolle(created_at, bezeichnung) VALUES (now(), 'ADMIN');
INSERT INTO rolle(created_at, bezeichnung) VALUES (now(), 'SUPERVISOR');
INSERT INTO rolle(created_at, bezeichnung) VALUES (now(), 'BENUTZER');
INSERT INTO benutzer(created_at, anzeigename, benutzername, dienstnummer, passwort) VALUES (now(), 'ADMIN', 'ADMIN', '123', 'anyHashedPassword');
INSERT INTO benutzer_rolle(benutzer_id,rolle_id) VALUES (1,1);
我不确定的是:我是否必须以特定格式导入角色,例如:
ROLE_BENUTZER or ROLE_USER or BENUTZER
这是我的RequestMethod.GET
@RequestMapping(value="/lagerstandortupdate/{id}", method=RequestMethod.GET)
@PreAuthorize("hasRole('ROLE_BENUTZER')")
public String aendernForm(@PathVariable("id") long id, Model model) {
Lagerstandort exicting = lagerstandortRepository.findById(id);
model.addAttribute("lagerstandort", exicting);
return "lagerstandortupdate";
}
现在,我不确定hasRole是否必须具有ROLE_BENUTZER或BENUTZER? 我已经尝试了所有这些。
我的SecurityConfig看起来像这样:
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter
也许有人可以给我一个很好的建议。
谢谢!