![](/img/trans.png)
[英]How to UNIT test Spring @PreAuthorize(hasAuthority)?
[英]Spring security 4 @PreAuthorize(hasAuthority()) access denied
我試圖將Spring Security 3 @Secured(“admin”)注釋轉換為Spring Security 4兼容的方式。
這是我的usersService.java
@PreAuthorize("hasAuthority('admin')")
public List<User> getAllUsers() {
return usersDao.getAllUsers();
}
然后在security-context.xml
我有:
<security:intercept-url pattern="/admin" access="permitAll" />
...
<security:global-method-security pre-post-annotations="enabled" />
getAllUsers()
由LoginController.java
調用
@RequestMapping("/admin")
public String showAdmin(Model model) {
List<User> users = usersService.getAllUsers();
model.addAttribute("users", users);
return "admin";
}
在mySql數據庫中,有兩個表,用戶和權限。 authorities
有2列,用戶名和權限。 administrator
有權限admin
。
現在,如果我試圖訪問/admin
,我將被重定向到/login
,但在我與administrator
/login
后,我仍然得到“訪問被拒絕”。
我想我一定錯過了一些非常基本的東西,但由於我是Spring的新手,我無法弄明白。 任何幫助,將不勝感激。 謝謝。
更新:我嘗試將注釋更改為@PreAuthorize(“hasRole('ROLE_ADMIN')”)我還將mySql中的“權限”列從“admin”更改為“ROLE_ADMIN”,但它仍然給了我403.我做了沒有這多少信心,因為這個錯誤之前,我不得不改變hasRole('admin')
在securityContext.xml
到hasAuthority('admin')
盡管已經很晚了
hasRole(...)
為內容設置前綴 - 默認值為ROLE_
hasAuthority(...)
檢查內容沒有前綴,即只是純內容
試試這個@PreAuthorize("hasRole('ROLE_ADMIN')")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.