sec:在Spring Boot应用程序中使用Thymeleaf进行授权无法正常工作

时间:2018-07-02 14:22:11

标签: spring-boot spring-security thymeleaf

我正在尝试向表中的新行添加链接,该链接只能由ADMIN角色访问。

spring boot:1.4.0.RELEASE &thymeleaf-extras-springsecurity4.version:2.1.2。发布

function parse(str) {
    var arr = str.split('.');
    return function(obj) {
       return arr.reduce((o, i) => o[i], obj);
    }
}


let foo = {
   a: {
       b: {
          c: {
             bar: 0
          }
       }
   }

}

let c = parse('a.b.c')(foo);
console.log(c.bar);
c['bar'] = 1;
console.log(foo);

使用的命名空间是:

 <sec:authorize access="hasRole('ROLE_ADMIN')">
    <tr>
        <td>...</td>
        <td>...</td>
    </tr>
 </sec:authorize>

WebSecurityConfigAdapter:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">

但是使用此代码,即使没有ADMIN特权的用户也可以查看表的行。

有人可以帮助我前进的道路吗?

1 个答案:

答案 0 :(得分:0)

应该可以。 我很确定您也在向该用户添加ROLE_ADMIN。 尝试调试在使用标记的位置呈现jsp的控制器,然后从Authentication中获取主体对象

  authentication.getPrincipal()

遍历对象,直到找不到GrantedAuthority,然后检查用户是否具有ROLE_ADMIN