我正在尝试使用spring security。我在内存管理员和用户中创建了两个用户。
auth.inMemoryAuthentication().withUser("admin").password("admin").roles("ADMIN");
auth.inMemoryAuthentication().withUser("user").password("user").roles("USER");
这是我的pom.xml:
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
</dependency>
这是我的html页面:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/myStyle.css"/>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.js"></script>
<script type="text/javascript" src="js/myApp.js"></script>
<link rel="stylesheet" href="css/print.css" type="text/css" media="print" />
</head>
<body ng-app="myStockApp">
<div ng-controller="mainctr">
<div data-ng-init="listArticles()">
<div sec:authorize="hasRole('ROLE_ADMIN')">Only for admin</div>
//code ...
我希望只有管理员才能看到div,但是当我以用户身份登录时,会显示上面的div,或者它应该消失。你能告诉我问题在哪里吗?谢谢。
答案 0 :(得分:1)
你可以用百里香替换吗
<div sec:authorize="hasRole('ROLE_ADMIN')">Only for admin</div>
以下
<div sec:authorize="hasAuthority('ADMIN')">Only for admin</div>
让我知道它是否适合你。
答案 1 :(得分:0)
如果未将 thymeleaf-extras-springsecurity 更改为正确的版本,请确保使用的是 spring security 4 。
答案 2 :(得分:0)
搜索并尝试了解问题后,我发现方言存在问题
您可以在此处看到如何添加方言: How do I add Thymeleaf SpringSecurityDialect to spring boot
tl;博士 将此添加到您的配置
@Bean
public SpringSecurityDialect securityDialect() {
return new SpringSecurityDialect();
}