当前位置: 首页 > 知识库问答 >
问题:

根据用户角色和权限显示不同的网页和元素

嵇浩淼
2023-03-14

我有一个Spring MVC Web应用程序,其中Thymeleaf作为模板引擎,Spring Security用于管理登录阶段。

我的用户可以使用不同的角色(ROLE\u ADMIN、ROLE\u USER和ROLE\u GUEST)登录。此外,角色为Role\u user的用户是一个或多个工作组(一组用户)的一部分,在工作组中,他/她可以使用不同的权限进行操作:WG\u ADMIN、WG\u user、WG\u GUEST。每个权限都允许WG用户对WG资源执行一些操作。

现在,我有了一组视图,并希望根据用户的角色和WG权限来管理对页面和页面元素的授权。

用Spring MVC和Thymeleaf完成事情的标准方法是什么?

非常感谢。

共有2个答案

凌声
2023-03-14

您可以使用以下选项:

<div sec:authorize="hasRole('ROLE_ADMIN')">
    Hi, <span sec:authentication="principal.name"></span> 
</div>
秦联
2023-03-14

您将需要@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注释将被处理,并且该方法不会执行。

这是我从你的问题中理解的,如果这不是你要找的,我会删除我的答案。

 类似资料:
  • 下午好.如何在不使用不同的OAUTH2服务的情况下,为一个应用程序中的特定实体(类似于RBAC/ABAC)的特定控制器配置用户的权限和角色? 还有一个名为Project的实体。用户可能是许多项目的成员。有一些项目用户角色:PROJECT_ADMIN、PROJECT_EDITO、PROJECT_USER。每个项目角色都可以拥有自己的权限(权限),如向项目添加用户、编辑项目等。所有角色配置都存储在'P

  • 有些企业会对向用户发送的营销内容进行严格的管理——基层的运营或营销经理拟定的活动必须经过上级管理者的审批,方可生效执行。为此,诸葛的智能触达中提供了基于用户角色的触达活动权限管理,以支撑上述的企业需求。 如果您的团队需要使用权限控制,可通过以下步骤开启使用: 开启权限控制:智能触达的权限控制默认是关闭的,需要开启后方能使用; 分配用户角色:为团队成员分别分配设定「管理员」和「运营人员」角色; 开始

  • 我有一个springmvc和springsecurity项目。 角色: 权限: 以及在角色和权限之间: 接下来的情况是: 我有一个控制器,我想用注释保护操作 大概是这样的: 但是注释不起作用,但是如果我把代码改成这样就可以了: 有人能给我一个提示吗?我不想用权限限制操作,我更喜欢角色限制。 提前谢谢。

  • 角色是分配给用户的权限集合。默认情况下,Navicat Monitor 包含三个预定义的角色供你分配给不同用户以限制其访问权限。它还允许你创建具自定义权限设置的新角色。苃要配置角色及其权限,请前往“配置”->“角色和权限”。 每个预定义的角色都有不同的权限: 角色 权限 管理员 可以完全控制访问所有页面。此角色的权限是不可编辑的。 DBA 可以访问所有页面,但以下功能“除外”: - 激活令牌密钥,

  • 问题内容: 假设我的角度SPA应用程序中有一个菜单,现在我希望向所有用户显示基本选项,例如家庭,关于我们,承运商的机会等。 我还希望有其他一些选项,例如管理用户,管理职位等,这些选项只会显示给管理员。 我们还假设我们有一个API访问点,可以为我提供用户角色,或者更好的是,该用户角色位于从/ api / users / me检索的对象内。 封装那些管理工具以防止普通用户查看的最佳方法是什么? 视图之

  • 在我的Spring Boot应用程序中,我有一个REST控制器,其方法如下: 只有具有权限\u UPDATE\u OWN\u COMMENT或权限\u UPDATE\u ANY\u COMMENT的用户才能使用此endpoint。 在这个方法中,我需要创建两个不同的流-一个用于具有的用户,另一个用于具有权限的用户。 所以我的问题是——为了在单个方法中实现这些不同的逻辑流,Spring Securi