- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于使用 FOSRestBundle 的 Web 服务,我创建了一个防火墙来强制登录以访问应用程序。
我的问题是,当我通过 ajax 调用 API 时,我需要在用户未通过身份验证时获取错误代码 401,而不是接收登录表单的 html 源代码。如何配置应用程序?
secured_area:
pattern: ^/
form_login:
provider: fos_userbundle
use_forward: false
default_target_path: /w
logout:
path: /logout
target: /login
编辑:
感谢 Ryan,这里是 KernelExceptionListener 方法。
public function onKernelException( GetResponseForExceptionEvent $event ) {
// get exception
$exception = $event->getException();
// get path
$path = $event->getRequest()->getPathInfo();
if ( $exception instanceOf AuthenticationException && ($event->getRequest()->isXmlHttpRequest() || strpos( $path, '/api' ) === 0) ) {
$response = new Response();
$response->setStatusCode( 401 );
$event->setResponse( $response );
$event->stopPropagation();
}
}
最佳答案
您使用了身份验证而不是授权这个词,不幸的是,这似乎还没有写下来。因此,您可能需要创建自己的。
在一般情况下,一个简单的 Kernel Event listener拦截AuthenticationException应该创建异常。捕获此事件应该允许您在重定向到登录页面之前执行您喜欢的任何操作。
FOSRestBundle应该提供一个很好的例子来说明如何做到这一点。 FOSRestBundle 目前为授权层提供此功能 (AccessDeniedException)。稍加修改后,相同的框架应该也能为身份验证层提供相同的功能。
见拉#308对于提供授权监听器的更改集。参见 Security Exception Listener有关如何配置监听器的文档。
关于Symfony2 防火墙和 FOSRestBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15620922/
我正在尝试构建 symfony2 rest api,但我正在为 FOSRestBundle 苦苦挣扎 起初我可以制作“@View()”注释,因为它总是会说我的模板丢失,无论我使用什么配置选项我都会得到
对于使用 FOSRestBundle 的 Web 服务,我创建了一个防火墙来强制登录以访问应用程序。 我的问题是,当我通过 ajax 调用 API 时,我需要在用户未通过身份验证时获取错误代码 401
我可以使用@QueryParam()批注获取GET参数,但是看起来它仅适用于查询字符串数据:/user?id=123。 我宁愿像/user/123一样使用它。为此,我可能会使用@Get("/user/
我正在使用FOSRestBundle。我想返回用户信息,但数据信息较少......如何做到这一点?这是我当前的回复 { "id": 1, "user": { "id":
我正在尝试使用 Symfony2 和 FOSRestBundle 来构建 REST 框架,但失败得很惨。 我已完成以下操作: 在我的 deps 文件中: [FOSRest] git=git:/
我正在尝试在 FOSRestBundle 中添加自定义异常控件,但它似乎忽略了我的自定义消息(响应的状态代码正常)。 我有: throw new HttpException(404, "User {$
我使用 Symfony2.2 和 FOSRestBundle 我设置 #app/config/config/yml myapp_rest: resource: "@MyappRestBundl
我正在寻找一个简单、愚蠢的解决方案来强制所有symfony2 的content-type 到application/json fosrestbundle 中的 http 错误消息(如 MethodNo
上下文 我发现了很多关于使用 FOSRest 进行部分 API 响应的问题,所有答案都基于 JMS 序列化程序选项(排除、包含、组等)。它工作正常,但我尝试实现一些不那么“静态”的东西。 假设我有一个
我正在尝试将 FOSRestBundle 集成到我的应用程序中。 我只想在路由匹配时使用它,如 ^/api。 我真的不知道如何使用这个包,而且我认为文档非常糟糕。 (无意冒犯)。 fos_rest:
我在使用 FOSRestBundle 时遇到错误。 Fatal error: Class 'JMS\Serializer\SerializationContext' not found in /hom
我的 fos_rest 部分的配置: fos_rest: serializer: serialize_null: true view: view_res
有人可以清楚地解释应该如何使用 FOSRest 为 REST 请求配置路由吗?每个教程似乎都有不同的做法。 我的 Controller : all(); // returns arra
我是 Symfony (5.3) 的新手,想扩展 RequestBodyParamConverter (FOSRestBundle 3.0.5) 创建一个 REST api。使用 @ParamConv
我正在使用 Symfony2 和 FosRestBundle 为我们的系统开发一个 REST API。FosRestBundle 是一个非常好的工具,但它似乎有一个限制:只有属性(priviate、p
我正在尝试让我的 Controller 与参数 getter 一起工作。我做了文档中指定的所有说明。所以我有:配置fos_rest.yml: fos_rest: param_fetcher_lis
这是我的配置文件: // app/config/config.yml fos_rest: body_listener: array_normalizer: fos_rest.n
config.yml: twig: debug: %kernel.debug% strict_variables: %kernel.debug% exce
我有一个 symfony 应用程序,它提供 RESTful API(用于移动应用程序)并具有后端管理。 我可以通过facebook成功登录后端,但是我应该如何允许通过RESTful API登录? 最佳
我正在使用 symphony a fosrestbundle 开发一个 api。我还想在我的 Controller 中使用构造函数注入(inject),就像我总是注入(inject)一些 Entity
我是一名优秀的程序员,十分优秀!