如果我想检查用户是否在我的Laravel 5.1应用程序中登录,我可以使用
if (Auth::user()) {...}
Run Code Online (Sandbox Code Playgroud)
要么
if (Auth::check()) {...}
Run Code Online (Sandbox Code Playgroud)
在检查用户是否已登录时,是否有理由优先选择其中一个?
我正在尝试设置一个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请求并且 …
我正在尝试安装运行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) 我只是遇到了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_at和updated_at字段的分钟和秒完全相同.
我试图查看Model设置时间戳的类,但事实证明,setCreatedAt()只更新记录时确实没有调用该方法.
为什么会这样?
如何防止created_at场地变化?(更重要)
我正在学习堆溢出攻击,我的教科书提供了以下易受攻击的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)
我试图调用一个方法,该方法将生成一个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中创建和返回字符串数组,而无需全局定义它?
似乎曾经有一个设置来隐藏VsCode中的滚动条:
"editor.scrollbar.vertical": "hidden"
Run Code Online (Sandbox Code Playgroud)
但是,它似乎已被弃用,现在我收到了错误Unknown configuration setting.
有没有新的方法来隐藏VsCode中的滚动条?
如果我的解析防护失败,我想显示 404 页面/组件,但我不希望浏览器的 URL 发生更改。
我可以在不更改解析中的 URL 的情况下进行导航,如下所述:
this.router.navigate(['/404'], { skipLocationChange: true })
Run Code Online (Sandbox Code Playgroud)
当从应用程序内访问此防护时,此功能有效。但是,如果我直接导航到该页面,例如:/posts/1234路由器将 URL 更改为后备路由(认为 404 组件已正确显示)。如果我不跳过位置更改,一切都会按预期工作,但我的网址中有“/404”,这是我不想要的。
目前有没有办法用路由器实现这一点,或者这是一个错误?
如何检索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
我正在尝试使用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 ×4
laravel ×3
angular ×2
c ×2
arrays ×1
composer-php ×1
heap-memory ×1
javascript ×1
laravel-5 ×1
laravel-5.1 ×1
laravel-5.2 ×1
mysql ×1
phpunit ×1
stack-memory ×1
string ×1
typescript ×1
vue-resource ×1
vue.js ×1