小编tam*_*am5的帖子

哪个使用Auth :: check()或Auth :: user() - Laravel 5.1?

如果我想检查用户是否在我的Laravel 5.1应用程序中登录,我可以使用

if (Auth::user()) {...}
Run Code Online (Sandbox Code Playgroud)

要么

if (Auth::check()) {...}
Run Code Online (Sandbox Code Playgroud)

在检查用户是否已登录时,是否有理由优先选择其中一个?

php authentication laravel laravel-5.1

13
推荐指数
3
解决办法
2万
查看次数

用于auth标头的vue-resource拦截器

我正在尝试设置一个Vuejs前端应用程序(vue-cli webpack模板),以便放在我的Laravel API之上.

通过提供正确的身份验证令牌,我可以通过vue-resource从API获得成功的响应,例如:

methods: {
    getUser () {
      this.$http.get('http://localhost:8000/api/user', 
      {
        headers: {
          'Authorization': 'Bearer eyJ0e.....etc',
          'Accept': 'application/json'
        }
      }).then((response) => {
        this.name = response.data.name
      });
    },
Run Code Online (Sandbox Code Playgroud)

但是,我现在正在尝试设置拦截器,以便为每个请求自动添加用户的身份验证令牌.

基于vue-resource自述文件我在我的尝试中main.js:

Vue.use(VueResource)

Vue.http.interceptors.push((request, next) => {
  request.headers['Authorization'] = 'Bearer eyJ0e.....etc'
  request.headers['Accept'] = 'application/json'
  next()
})
Run Code Online (Sandbox Code Playgroud)

然后回到我的组件我现在只有:

this.$http.get('http://localhost:8000/api/user').then((response) => {
    this.name = response.data.name
});
Run Code Online (Sandbox Code Playgroud)

问题:

当我在get自身中指定标题时,我得到了一个成功的响应,但是当我通过它时,我从服务器interceptor返回一个401 Unauthorized.我怎样才能解决这个问题,以便在使用拦截器时成功响应?

编辑: 当我使用dev-tools查看传出请求时,我看到以下行为:

通过提供标头来发出请求时$http.get,我发出了一个成功的OPTIONS请求,然后成功GET请求,并将Authentication标头提供给GET请求.

但是,当我从$http.get直接删除标题并将它们移动到拦截器时,我只发出一个GET请求并且 …

vue.js vue-resource

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

PHP Composer - 无法在macOS Sierra上安装composer

我正在尝试安装运行getcomposer.org/download文档站点上提供的命令的composer:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Run Code Online (Sandbox Code Playgroud)

但是我收到一条错误消息:

Warning: copy(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in Command line code on line 1

Warning: copy(): Failed to enable crypto in Command line code on line 1

Warning: copy(https://getcomposer.org/installer): failed to open stream: operation failed in Command line code on …
Run Code Online (Sandbox Code Playgroud)

php composer-php

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

Laravel Eloquent created_at正在更新

我只是遇到了Eloquent(Laravel 5.2.10)的默认时间戳.默认情况下,该$table->timestamps()方法为您提供表中的一个created_at和一个updated_at相应更新的列.

但是,当我尝试一些测试条目时,我注意到当你更新记录时,updated_at字段会更新,但是created_at字段也会更新:它的小时数保持在创建时间,但分钟和秒数会更新匹配该updated_at领域.

如果这太浪漫了,这是一个例子:

+---------------------+---------------------+
| created_at          | updated_at          |
+---------------------+---------------------+
| 2016-01-13 17:13:27 | 2016-01-13 22:13:27 |
| 2016-01-13 16:14:41 | 2016-01-13 21:14:41 |
+---------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

请注意,created_atupdated_at字段的分钟和秒完全相同.

我试图查看Model设置时间戳的类,但事实证明,setCreatedAt()只更新记录时确实没有调用该方法.

为什么会这样?
如何防止created_at场地变化?(更重要)

php mysql laravel laravel-5 laravel-5.2

8
推荐指数
1
解决办法
1970
查看次数

堆溢出攻击

我正在学习堆溢出攻击,我的教科书提供了以下易受攻击的C代码:

/* record type to allocate on heap */
typedef struct chunk {
    char inp[64];            /* vulnerable input buffer */
    void (*process)(char *); /* pointer to function to process inp */
} chunk_t;

void showlen(char *buf)
{
    int len;
    len = strlen(buf);
    printf("buffer5 read %d chars\n", len);
}

int main(int argc, char *argv[])
{
    chunk_t *next;

    setbuf(stdin, NULL);
    next = malloc(sizeof(chunk_t));
    next->process = showlen;
    printf("Enter value: ");
    gets(next->inp);
    next->process(next->inp);
    printf("buffer5 done\n");
}
Run Code Online (Sandbox Code Playgroud)

但是,教科书没有解释如何修复此漏洞.如果有人能够解释漏洞以及修复它的方法那将是很好的.(部分问题是我来自Java,而不是C)

c buffer-overflow

6
推荐指数
2
解决办法
633
查看次数

解决错误“与返回的局部变量关联的堆栈内存地址”

我试图调用一个方法,该方法将生成一个2D char数组(字符串数组)并将其返回以在另一个函数中使用。

我的例子:

char ** example(void)
{
    char *test[3];

    int i;
    for (i = 0; i < 3; i++) {
        test[i] = malloc(3 * sizeof(char));
    }

    test[foo][bar] = 'baz'; // of course I would declare 'foo' and 'bar'
    // ...
    // ...

    return test;
}
Run Code Online (Sandbox Code Playgroud)

然后,我希望能够如下使用数组:

void otherMethod(void)
{
    char ** args = example();
    // do stuff with args
}
Run Code Online (Sandbox Code Playgroud)

问题是这会产生错误

警告:与局部变量“ test”关联的堆栈内存地址已返回[-Wreturn-stack-address]

我可以通过test在全局范围(而不是局部范围)中进行定义来解决此问题,但是我宁愿不要这样做,因为它看起来很杂乱,尤其是如果我要拥有其中几个。

有没有一种方法可以在C中创建和返回字符串数组,而无需全局定义它?

c arrays string heap-memory stack-memory

4
推荐指数
1
解决办法
1万
查看次数

如何隐藏VsCode Scrollbars?

似乎曾经有一个设置来隐藏VsCode中的滚动条:

"editor.scrollbar.vertical": "hidden"
Run Code Online (Sandbox Code Playgroud)

但是,它似乎已被弃用,现在我收到了错误Unknown configuration setting.

有没有新的方法来隐藏VsCode中的滚动条?

visual-studio-code vscode-settings

4
推荐指数
1
解决办法
942
查看次数

Angular 4 解析防护重定向而不更改 URL?

如果我的解析防护失败,我想显示 404 页面/组件,但我不希望浏览器的 URL 发生更改。

我可以在不更改解析中的 URL 的情况下进行导航,如下所述

this.router.navigate(['/404'], { skipLocationChange: true })
Run Code Online (Sandbox Code Playgroud)

当从应用程序内访问此防护时,此功能有效。但是,如果我直接导​​航到该页面,例如:/posts/1234路由器将 URL 更改为后备路由(认为 404 组件已正确显示)。如果我不跳过位置更改,一切都会按预期工作,但我的网址中有“/404”,这是我不想要的。

目前有没有办法用路由器实现这一点,或者这是一个错误?

typescript angular angular-router-guards

4
推荐指数
1
解决办法
2347
查看次数

ngFor 里面的 ngModelGroup?

如何检索NgModelGroup嵌套在 中的的验证状态NgFor

如果我没有NgFor,我可以将组分配给这样的模板变量:

<p *ngIf="addressCtrl.invalid">Address is invalid.</p>

<div ngModelGroup="address" #addressCtrl="ngModelGroup">
    <input name="city"  [ngModel]="address.city"  required>
    <input name="state" [ngModel]="address.state" required>
    <input name="zip"   [ngModel]="address.zip"   required>
</div>
Run Code Online (Sandbox Code Playgroud)

但相反,我想要这样的东西:

<p *ngIf="addressCtrl.invalid">Address # {{index}} is invalid.</p>

<div *ngFor="let address of addresses">
    <div ngModelGroup="address" #addressCtrl="ngModelGroup">
        <input name="city"  [ngModel]="address.city"  required>
        <input name="state" [ngModel]="address.state" required>
        <input name="zip"   [ngModel]="address.zip"   required>
    </div>
</div
Run Code Online (Sandbox Code Playgroud)

问题是我得到的addressCtrl是未定义的。

这是我创建的一个 plunker 来测试这个:https ://plnkr.co/edit/RXi2T52kynsWLr4fDMVa?p=preview

javascript angular-ngmodel angular2-ngmodel angular

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

运行单个测试时找不到PHPUNIT_Framework_TestCase

我正在尝试使用Laravel 5.2.10进行 PHPUnit测试.我在我的项目中本地安装了PHPUnit 5.1.4.

当我跑:

phpunit
Run Code Online (Sandbox Code Playgroud)

PHPUnit test完美地运行我的目录中的所有测试.

但是,当我跑:

phpunit tests/unit/testThatFails.php
Run Code Online (Sandbox Code Playgroud)

我明白了:

PHP Fatal error:  Class 'PHPUNIT_Framework_TestCase' not found in ...
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我运行phpunit时,它成功运行了测试目录中的每个测试,包括这testThatFails.php很好.

当我尝试运行一次测试时为什么会中断?

更新:
这是我的phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="bootstrap/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist>
            <directory suffix=".php">app/</directory>
        </whitelist>
    </filter>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
    </php>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

更新:
目前,由于我使用的是Laravel,我通过扩展来避开这个问题TestCase …

php phpunit laravel

0
推荐指数
1
解决办法
1万
查看次数