小编nah*_*hri的帖子

暂时禁用/绕过中间件

在我的应用程序中,我实现了OAuth2-Server(oauth2-server-laravel)与自定义身份验证包(Sentinel by Cartalyst)的组合.

在我的routes.php中:

Route::group(['before' => 'oauth'], function()
{
    // ... some routes here
}
Run Code Online (Sandbox Code Playgroud)

因此,请求必须提供授权标头,否则应用程序将退出OAuthException.

现在我想对我的控制器进行单元测试.因此,我必须为每个测试使用OAuth会话和访问令牌为我的数据库建立种子.然后覆盖call()-method TestCase并使用Bearer Token设置HTTP-Authorization Header.

有没有办法禁用或绕过中间件(在我的情况下仅用于单元测试)?

在Laravel 4中,它们被称为路由过滤器,无论如何它们在测试环境中被禁用.您也可以手动启用/禁用它们Route::enableFilters().

laravel-routing laravel-5 laravel-middleware

6
推荐指数
1
解决办法
3982
查看次数

帐户激活后CakePHP 2.0自动登录

我正在研究新项目的用户管理组件.计划是:

  1. 用户在页面上注册的帐户数据量最少(用户名,密码,电子邮件)
  2. 用户收到带有激活链接的电子邮件以激活帐户
  3. 用户点击链接并激活他的帐户
  4. 系统在激活后自动登录用户,并将其重定向到带有帐户信息的仪表板(最后登录,"用户名"等).

但是自动登录存在一些问题.这是我使用的代码的一部分:

<?php
...
// set userstatus to "active" and delete meta information "activation_key"
// then automatically login
$this->User->id = $id;
$this->User->saveField('modified', date('Y-m-d H:i:s') );
$this->User->saveField('status', 1 );

// $this->User->deleteActivationKey ....

$this->Auth->login($this->User->read());
$this->Session->setFlash(__('Successfully activated account. You are now logged in.'));

$this->User->saveField('last_login', date('Y-m-d H:i:s') );

$this->redirect(array('controller' => 'pages'));
...
Run Code Online (Sandbox Code Playgroud)

这个工作到目前为止,直到您想要使用Auth组件的user()函数获取有关登录用户的信息.

我们在AppController-> beforeRender中使用它,以便在用户信息应用程序范围内:

$this->set('auth', $this->Auth->user());
Run Code Online (Sandbox Code Playgroud)

但在自动登录操作之后,我得到了未定义的索引通知.(例如,通过在视图中访问$ auth ['id']).print_r()仅显示当前用户的用户名和哈希密码.如果您手动登录,一切正常.它必须是帐户激活后自动登录的东西.

似乎是会话的问题?我究竟做错了什么?

session cakephp autologin

5
推荐指数
1
解决办法
5854
查看次数

在Heroku上使用CakePHP的SSL重定向进行“太多重定向”

我的[310] Too many redirects蛋糕应用在使用强制将其重定向到安全连接后,在heroku上遇到了错误SecurityComponent::requireSecure()

public function beforeFilter() {
    $this->Security->blackHoleCallback = '_blackholeCallback';
    $this->Security->requireSecure('login', 'register');
}

// ...

public function _blackholeCallback($type) {
    if ($type == 'secure') {
        $this->redirect('https://' . env('SERVER_NAME') . $this->here);
    }
}
Run Code Online (Sandbox Code Playgroud)

ssl redirect cakephp heroku

2
推荐指数
1
解决办法
947
查看次数

鼠标悬停在子元素上,而不是在父元素上

我正在实现一个突出显示功能,突出显示当前悬停的div,我有这样的html结构:

<div> <!-- this is the parent -->
    <div> content ... </div><!-- a child -->
    <div> content ... </div><!-- another child-->
</div>
Run Code Online (Sandbox Code Playgroud)

它应该如何工作: - 如果我将鼠标悬停在父级上,则应突出显示父元素. - 如果我将鼠标悬停在子元素上,则父元素的突出显示应该淡出,并且它应该只突出显示子元素

我正在使用jquerys的mouseenter和mouseleaves事件,代码看起来像这样(实际上它有点不同,因为我正在使用gwt和本机javascript接口,但它的工作原理相同):

$(element).mouseenter(function(event)
{
    showHighlightContainer();
});

$(element).mouseleave(function(event)
{
    hideHighlightContainer();
});
Run Code Online (Sandbox Code Playgroud)

问题是:当我将鼠标悬停在父元素上时,元素突出显示,一切都很好.但当我将鼠标悬停在子元素上时,子元素会升级并突出显示父元素.

我使用了错误的鼠标事件吗?我怎么能解决这个问题?

javascript jquery mouseevent

2
推荐指数
1
解决办法
3030
查看次数