问题标签 [security-context]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - symfony 2.3 在 __construct 函数中调用非对象的成员函数 get()
我的项目使用 fosuserbundle 在 symfony 2.3 上运行。我想在控制器中获取当前用户
如果我在indexAction()
. 但是我在控制器的每个功能中都需要用户,所以我尝试将代码放入一个__construct
函数中,现在它不再起作用了。
为什么我不能在构造函数中设置变量?
spring - Spring Security Custom Authentication
I have a a custom authentication provider implemented in my spring MVC project. In my own over-riding authenticate() method I implement my own authentication where I construct my own UserPasswordAuthenticationToken() and return the object.
Now the userid in the above said object "UserPasswordAuthentictionToken" is anonymized, password null and the permissions are set to those that are granted to this user.
Question:
Does this cause the SecurityContextHolder or the SecurityContext in general to lose the original incoming credentials inside the Authenticate object that is passed to the overridden authenticate() method?
If it does not, what should I do to drop those original credentials and force Spring security context to hold my new anonymous authentication identifier [preferably along with other meta data ofcourse].
jax-rs - 会话上下文中的 ejb 始终为空
我创建了 sigleton 会话 bean,它与我的 mongo 数据库保持一个连接。使用 @EJB 注释时,它在 jax-rs 类中运行良好 - 在构造控制器并注入 bean 后,它调用带有 @PostConstruct 注释的 init 方法。
然后我创建了类似的类,它正在实现SecurityContext。我使用了与控制器中相同的模式,但它无法正常工作。永远不会调用 init() 方法,并且 EJB 实例始终为空。
那么有没有办法将 EJB 注入到我的 SecurityContext 实现中?除非我尝试注入和使用 MongoConnection,否则它运行良好
我用来连接 mongo 数据库的单例会话 bean:
我在 JAX-RS 控制器中使用它。它在这里工作,也在从 EntityController 继承的类中。
我实现了自己的安全上下文,它在 mongo 数据库中查找已登录的用户角色。
编辑:
我忘记了,我在 glassfish 4 控制台中也有这个警告:
编辑2:
symfony - SecurityContext->isGranted() 在控制器中工作但不在服务中
我的应用程序的公共区域无需登录或身份验证即可访问,当我在控制器中运行此代码时,if ($securityContext->isGranted('IS_AUTHENTICATED_ANONYMOUSLY'))
我得到了true
预期的结果。
然后我有一个这样定义的服务:
但是当我运行这段代码时:
我得到一个例外:
未捕获的异常“Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException”与消息“安全上下文不包含身份验证令牌。一个可能的原因可能是没有为此 URL 配置防火墙。
在控制器中的第一个命令之后立即调用该服务。
谢谢
symfony - Symfony 服务配置器:带有 security.context 的 getToken 为 NULL
我在我的项目中使用 Symfony Service Configurator 在实例化(Docs)后配置服务,在 Configure 方法中我需要当前用户登录,所以我注入容器并尝试获取令牌表单 Security.context 服务但我得到了始终为 NULL。我还尝试在我的 Configurator 构造中只注入 Security.context 但我得到了相同的结果。
任何想法请
谢谢。
php - 如何检查用户是否具有特定角色并因此允许某些操作?
我需要检查登录用户是否在系统上具有某些角色,以便我允许或不允许某些操作。我正在使用 JMSSecurityExtraBundle 并检查文档以获取基于表达式的授权,但由于代码无法正常工作,因此我做错了。看看这段代码:
但是任何时候我登录时,即使作为拥有所有权限并拥有 ROLE_ADMIN 的 ADMIN,我看到的唯一文本是“请勿输入”,这是完全错误的。在此处解释的示例代码中,作者使用$securityContext
var 但它来自哪里?这个 var 是在哪里定义的?我假设它将指向SecurityContext但我不太确定,我的代码问题出在哪里?如何检查用户是否具有特定角色并因此允许它执行某些代码?
php - Symfony2 功能测试中的用户令牌
我正在对 Symfony2 控制器进行功能测试,从这里继承我的测试类:
如果我将控制器用作应用程序的一部分:
$this->container->get('security.token_storage')->getToken()->getUser()
并且$this->getUser()
是我的 Doctrine“用户”实体的实例。
但是在运行功能测试时:
$this->container->get('security.token_storage')->getToken()->getUser()
是一个包含用户名的字符串,并且$this->getUser()
是NULL
.
我需要做什么才能使我的应用程序和功能测试中的行为保持一致?
java - 上下文注入 SecurityContext 为空
我使用 JAX-RS 2.0 和 JPA 创建了一个 Javae EE 应用程序。我为我的用户实体(使用限定符)创建了一个特殊的提供者,以提供当前用户(登录)作为应用程序用户数据库中的实体。要获取当前用户,我使用
问题是这是空的。安全设置很好(Wildfly 8.2) - 应用程序要求身份验证(基本)但SecurityContext
为空。这是代码:
如您所见,我检查secContext
null 并且一旦我尝试访问注入的资源,我就会看到我的异常@CurrentUser
。
那么如何解决这个问题呢?为什么为SecurityContext
空。
authentication - 使用 Spring Security 时请求之间是否共享 SecurityContext?
在使用 Spring Boot 编写的 rest API 上使用基于无状态令牌的身份验证时,我看到了一些奇怪的行为。
客户端在每个请求中都包含一个 JWT 令牌,并且我编写的扩展 GenericFilterBean 的自定义过滤器使用以下内容将基于令牌中的声明的身份验证对象添加到安全上下文中:
并在处理请求后清除上下文:
但是,当我开发的简单应用程序执行一系列操作时,我有时会发现安全上下文设置不正确 - 有时它对于提供令牌的请求为空。过滤器被正确调用,setAuthencation() 也被调用,但请求身份验证失败,并抛出 403 denied。
如果我通过将会话创建策略设置为 STATELESS 来明确关闭任何 http 会话管理,则此行为将停止。
有什么想法可以在这里发生吗?是否以某种方式在处理请求的线程之间共享安全上下文?
multithreading - 如何自定义 SecurityContextPersistenceFilter 的行为?
我开发了一个使用基于令牌的身份验证的无状态 REST API,我通过SecurityContextHolder.getContext().setAuthentication(authentication)
从自定义安全过滤器中调用手动将身份验证对象添加到安全上下文中。我一直遇到上下文设置不正确的问题,我认为这是由于:
在单个会话中接收并发请求的应用程序中,相同的 SecurityContext 实例将在线程之间共享。即使使用了 ThreadLocal,它也是从每个线程的 HttpSession 中检索到的同一个实例。如果您希望临时更改线程正在运行的上下文,这会产生影响。如果您只使用 SecurityContextHolder.getContext(),并在返回的上下文对象上调用 setAuthentication(anAuthentication),那么 Authentication 对象将在共享相同 SecurityContext 实例的所有并发线程中发生变化。...
您可以自定义 SecurityContextPersistenceFilter 的行为,为每个请求创建一个全新的 SecurityContext,防止一个线程中的更改影响另一个线程。
所以问题是 - 你如何改变 SecurityContextPersistenceFilter 的行为?
我希望安全上下文不与 http 会话相关联,但不想将会话创建策略设置为无状态,因为我仍然想实现 CSRF 保护等。