我对此有一个小的解释。在这里,您已通过普通用户身份验证,但无权查看管理员页面。
如果您使用的是
access="hasRole('ROLE_ADMIN')"表达式,那么SpringEL类(即
SecurityexpressionRoot)将为
ROLE_
我们在
hasRole()表达式中提供的每个角色添加前缀。因此,根据您的情况,您提供的角色可以
hasRole('ROLE_ADMIN')解决ROLE_ROLE_ADMIN。
因此,您被认证为具有的用户
ROLE_ADMIN。但是对于Spring Security框架,要查看管理页面,用户必须具有角色
ROLE_ROLE_ADMIN(因为
SecurityexpressionRoot该类添加了
ROLE_前缀)。
因此,为此
ROLE_在代码中删除该前缀,即在这里
access="hasRole('ADMIN')" ,SpringSecurity将
ROLE_自动添加该前缀。并确保您已将数据库中的管理员角色指定为
ROLE_ADMIN。



