根据用户角色和权限显示不同的网页和元素
Show different web pages and elements depending on the user Role and Privilege
我有一个 Spring MVC 网络应用程序,使用 Thymeleaf 作为模板引擎,Spring 安全管理登录阶段。
我的用户可以使用不同的角色登录(ROLE_ADMIN、ROLE_USER 和 ROLE_GUEST)。
此外,具有角色 ROLE_USER 的用户是一个或多个工作组(一组用户)的一部分,并且在工作组 he/she 中可以使用不同的权限:WG_ADMIN、WG_USER、 WG_GUEST。
每个权限都允许 WG 用户对 WG 资源执行某些操作。
现在我有一组视图,想根据用户的角色和 WG 权限管理对页面和页面元素的授权。
使用 Spring MVC 和 Thymeleaf 完成工作的规范方法是什么?
谢谢
您可以使用以下内容:
<div sec:authorize="hasRole('ROLE_ADMIN')">
Hi, <span sec:authentication="principal.name"></span>
</div>
您需要@PreAuthorize 和@Secured 的组合。我会告诉你有什么区别。你的控制器方法应该用@PreAuthorize 注释。有了这个,如果用户没有角色,用户将根据您的安全设置重定向。
对于@Secured,如果用户没有角色,则不会执行该方法。所以你应该在服务层使用@Secured。
你需要这样的东西。
@PreAuthorize(hasRole('ROLE_ADMIN'||'ROLE_USER'))
@RequesMapping(value="/doblahblah")
public String doBlahBlahh(){
methodOnlyAdminCanExecute();
methodOnlyUserCanExecute();
}
@PreAuthorize(hasRole('ROLE_USER'))
@RequesMapping(value="/douserstuff")
public String douserstuff(){
methodOnlyAdminCanExecute();
methodOnlyUserCanExecute();
}
服务层:
public class adminCode{
@Secured("ROLE_ADMIN")
public void doAdminStuff(){
//dostuff
}
}
现在,即使在第二个控制器方法中调用此方法,它也不会执行,@Secured 注释将被处理,并且该方法不会执行。
这是我从你的问题中了解到的。如果这不是您要找的,我将删除我的答案。
我有一个 Spring MVC 网络应用程序,使用 Thymeleaf 作为模板引擎,Spring 安全管理登录阶段。
我的用户可以使用不同的角色登录(ROLE_ADMIN、ROLE_USER 和 ROLE_GUEST)。 此外,具有角色 ROLE_USER 的用户是一个或多个工作组(一组用户)的一部分,并且在工作组 he/she 中可以使用不同的权限:WG_ADMIN、WG_USER、 WG_GUEST。 每个权限都允许 WG 用户对 WG 资源执行某些操作。
现在我有一组视图,想根据用户的角色和 WG 权限管理对页面和页面元素的授权。
使用 Spring MVC 和 Thymeleaf 完成工作的规范方法是什么?
谢谢
您可以使用以下内容:
<div sec:authorize="hasRole('ROLE_ADMIN')">
Hi, <span sec:authentication="principal.name"></span>
</div>
您需要@PreAuthorize 和@Secured 的组合。我会告诉你有什么区别。你的控制器方法应该用@PreAuthorize 注释。有了这个,如果用户没有角色,用户将根据您的安全设置重定向。
对于@Secured,如果用户没有角色,则不会执行该方法。所以你应该在服务层使用@Secured。
你需要这样的东西。
@PreAuthorize(hasRole('ROLE_ADMIN'||'ROLE_USER'))
@RequesMapping(value="/doblahblah")
public String doBlahBlahh(){
methodOnlyAdminCanExecute();
methodOnlyUserCanExecute();
}
@PreAuthorize(hasRole('ROLE_USER'))
@RequesMapping(value="/douserstuff")
public String douserstuff(){
methodOnlyAdminCanExecute();
methodOnlyUserCanExecute();
}
服务层:
public class adminCode{
@Secured("ROLE_ADMIN")
public void doAdminStuff(){
//dostuff
}
}
现在,即使在第二个控制器方法中调用此方法,它也不会执行,@Secured 注释将被处理,并且该方法不会执行。
这是我从你的问题中了解到的。如果这不是您要找的,我将删除我的答案。