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

Spring Security授权

连厉刚
2023-03-14
GET /resources/{resourceId}

上面的API为用户提供了关于给定资源的所有信息。

目前,我使用WebSecurityConfigurerAdapter进行身份验证。为了添加授权,我已经观察到我可以将授予的权限设置为身份验证对象的一部分。这样,我可以使用@preauthorize(“hasRole('role_user')”)这样的东西来进行授权。

然而,对于所提到的API,由于以下原因,我不确定所提到的授权方法是否适合。

    null

如果指定的方法不是解决问题的最佳方法,我将非常感谢任何关于最佳方法的输入/反馈。我想避免在控制器中进行此检查。我试图通过Spring Security来实现这一点,类似于@preauthorize的工作方式。我认为访问resourceId是一项授权要求,如果用户没有访问该资源的权限,我们甚至不应该进入API控制器。

共有1个答案

童花蜂
2023-03-14

通过绑定到资源id的角色分发权限似乎是一个潜在的维护噩梦。如果您不想允许访问控制器,那么access可能是最好的使用方法。

上面的链接提供了基于Java和xml的配置的示例,并展示了如何在进入控制器之前获得对路径的访问权。

您将提供一个可以引用的方法,如:

布尔checkResourceAccess(Principal Principal,int resourceId)

在配置中,可以引用url参数,如#resourceId将其映射到{resourceId}

Java配置示例:

http.authorizeRequests()
    .antMatchers("/resources/{resourceId}")
    .access("@yourBean.checkResourceAccess(principal,#resourceId)")...
 类似资料:
  • 我们使用Spring Security OAuth2保护我们的REST服务(用于服务器到服务器通信,不涉及用户)。但是,当您尝试访问浏览器中的受保护资源时,它将显示: 我们希望这是我们自己选择的自定义页面。有办法吗? 设置“拒绝访问”页面不起作用。首先,它需要定义一个登录页面,我们没有,因为这是一个纯服务器到服务器的通信。另一个原因是,这个属性自Spring 3.0..或类似的版本以来就被弃用了。

  • 主要内容:1.入门,2.设置用户名和密码1.入门 1.启动一个SpringBoot项目 2.导入SpringSecurity相关依赖 3.编写Controller TestController.java 用户是user 密码是刚刚的 2.设置用户名和密码 1.在配置文件中设置 2.在配置类中设置 3.自定义实现类 2.1 配置文件中设置 2.2 在配置类中设置 设置用户名为zZZ,密码为root 2.3 自定义实现类 配置类: 业务类:

  • 在WAR的情况下,它试图将请求转发到/error页面,并寻找它的处理程序方法(请参见底部的日志)。 最后我得到以下回应: 我该换什么才能得到401?

  • 1.导入jar包 web.xml spring-security.xml

  • 本文向大家介绍SpringSecurity 测试实战,包括了SpringSecurity 测试实战的使用技巧和注意事项,需要的朋友参考一下 引言 试题管理系统的安全模块使用Spring Security,代码从原华软仓库移植,在移植的过程中,发现原测试编写的不好,遂在新系统中对安全模块测试进行了重构。 Spring 测试 添加@SpringBootTest注解,意为这是一个基于SpringBoot

  • 我正在设置Angular Spring Security模块来登录和注册用户。当我注册一个用户时,一切都正常。注册后的最后一步是自动登录,但我遇到了以下错误: XMLHttpRequest无法加载超文本传输协议//localhost:8080/com-tesis/login.请求的资源上不存在“访问控制允许起源”标头。因此不允许访问起源“超文本传输协议//localhost:9000”。响应的HT

  • 问题内容: 我目前正在评估基于Java的安全框架,我是Spring 3.0用户,因此似乎似乎SpringSecurity是正确的选择,但是Spring安全性似乎受到过分复杂的困扰,它似乎并没有使安全性易于实现, Shiro似乎更加连贯,更容易理解。我正在寻找这两个框架之间的利弊清单。 问题答案: 我也同意Spring Security对我来说感觉太复杂了。当然,他们已经做了一些降低复杂性的事情,例

  • 我在这里有很多问题要解决。一直试图将上述3项技术集成到我们的WebApp中…我们要使用 null web.xml: 我的servlet-context.xml: My manager-context.xml: 编辑2 我认为主要的问题是SpringSecurity需要webapp上下文(ContextLoaderListener)才能工作,但web应用程序是在servlet上下文中运行的。控制器方