我有一个“Foo”控制器,它正在自动装配“Foo”服务。
现在,当我向控制器添加PreAuthorize注释时,视图方法工作正常,PreAuthorize标记仅授予具有ADMIN权限的用户访问权限,但响应体方法(getFoo)不能按预期工作。
使用PreAuthorize注释时,getFoo方法无法正确自动装配/实例化foService对象,该对象的值为null,导致NPE(空指针异常)。
问题概述:当AJAX GET请求调用getFoo方法时,fooService为null(导致NPE)。
然而,当注释掉@PreAuthorize时,调用getFoo时,fooService不再为null。
...
这是代码:
Foo控制器
@Controller
@RequestMapping("/foo")
@PreAuthorize("hasAuthority(T(com.foo.security.Authorities).ADMIN)")
public class FooController {
@Autowired
private FooService fooService;
@RequestMapping(value = "/view")
public String view(@AuthenticationPrincipal Principal principal) {
return "view";
}
@RequestMapping(value = "/getFoo")
@ResponseBody
public Foo getFoo() {
fooService.getFoo(); <- NPE happens here
}
}
Foo服务
@Service("fooService")
public class FooServiceImpl implements FooService {
@Autowired
FooRepository fooDao;
@Override
public Foo getFoo() {
return fooDao.getFoo();
}
}
安全配置
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter { ... }
调用服务的线程似乎没有正确的安全角色。
尝试移动@PreAuthorize
注释以仅保护view
方法。
同样根据您的评论,我发现您的问题可能是使用了两个不同的bean实例。检查是否未在上下文文件中复制定义。
确保所有带有RequestMapping注释的控制器方法未声明为私有
我有一个spring boot应用程序,其中自动连接的服务突然在特定的方法中返回null。 以下是控制器的代码段: < code>userService在第一个方法中为null,在第二个方法中运行良好。 更新:这是用户服务的代码片段,在“寄存器”方法中为空。 具有正常的CRUD方法。请注意,userService为null,因此当我调用其任何方法时都会抛出NullPointerException。
我有一个用Java Spring MVC构建的web应用程序,并使用Spring Security进行登录。登录/退出工作很好。有两个用户角色“role_admin”和“role_user”。 我想确保我的方法只能由具有“role_admin”角色的用户访问。 我添加了批注,如下所示...
我有一个用vert编写的双垂直服务器。x反应性扩展。HTTP server verticle使用事件总线向DB verticle发送请求。从DB verticle(通过事件总线)接收到响应后,我使用rxEnd将响应发送到http客户端。然而,客户似乎没有收到这种回复,最终超时。如果我用end()来代替,事情会很顺利。我使用postman来测试这个RESTAPI。请参阅下面的代码,该代码将结果从数据
这可能是一个奇怪的问题,尽管我想知道为什么以前没有人提出过这个问题。。。因此,如果有任何无知,请纠正我。 首先,我将Jackson与Spring和@ResponseBody注释结合使用。目前,对于每个请求处理程序,我都返回一个“Response”包装器对象,这是客户机所期望的。这个包装非常简单: 问题是,我不喜欢显式地包装所有请求处理程序的每个返回值。我也不喜欢在单元测试中打开这些响应包装。 相反
安装应用程序时间线服务器时出错。请找出以下错误。 标准: 回溯(最近一次呼叫最后一次): 文件“/var/lib/ambari agent/cache/common services/warn/2.1.0.2.0/package/scripts/application\u timeline\u server.py”,第89行,在 执行 文件“/usr/lib/ambari agent/lib/re
问题内容: 我正在阅读Pro Spring3这本书。它有一段确实让我感到困惑。该段是关于春季自动装配的。这是节选: 在大多数情况下,是否应该使用自动装配的问题的答案肯定是“不!”。自动装配可以在小型应用程序中节省时间,但在许多情况下,这会导致不良做法,并且在大型应用程序中不灵活。使用byName似乎是个好主意,但它可能会导致您为类提供人为的属性名称,以便可以利用自动装配功能。Spring的整个想法