Я пытаюсь использовать весеннюю безопасность.Я создал двух пользователей в памяти администратора и пользователей.
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 выше, или он должен исчезнуть.Можете ли вы сказать мне, где проблема?спасибо.
убедитесь, что вы используете пружинную защиту 4 , если вы не изменили thymeleaf-extras-springsecurity на правильную
после поиска и попытки понять проблему, я обнаружил, что есть проблема с диалектом
, здесь вы можете увидеть, как добавить диалект: Как добавить Thymeleaf SpringSecurityDialect для весенней загрузки
tl; dr добавить это в вашу конфигурацию
@Bean public SpringSecurityDialect securityDialect() { return new SpringSecurityDialect(); }
Не могли бы вы заменить в тимьяне этот
<div sec:authorize="hasRole('ROLE_ADMIN')">Only for admin</div>
следующим
<div sec:authorize="hasAuthority('ADMIN')">Only for admin</div>
и сообщить мне, работает ли он для вас.