小编Kam*_*ski的帖子

如何在 Laravel 中进行 JWT cookie 身份验证

我想在 Laravel >=5.2 中进行 JWT 身份验证,使用这个(Tymon JWT-auth)库,但我想将 JWT 令牌放入 HttpOnly Cookies - 以保护 JWT 令牌免受 XSS 攻击。

  1. 我设置了 Tymon 库并...在项目中:app/Providers/RouteServiceProvider@mapWebRoutes 我php artisan route:list通过删除'middleware' => 'web'(如果我不这样做)为所有请求停用执行'web'中间件组(这是默认的laravel行为 - 你可以看到它)不这样做,我会看到 post 请求的 CSRF 问题)。
  2. 在routes.php我写:
Route::group(['middleware' =>'api', 'prefix' => '/api/v1', 'namespace' => 'Api\V1'], function () {
    Route::post('/login', 'Auth\AuthController@postLogin');
    ...
    Route::get('/projects', 'ProjectsController@getProjects');
}
Run Code Online (Sandbox Code Playgroud)
  1. 在可能 Api\V1\Auth\AuthController@postLogin 我生成令牌并将其作为 httpOnly cookie 发送回:

    ...
    try
    {
        $user = User::where('email','=',$credentials['email'])->first();
    
        if ( !($user && Hash::check($credentials['password'], $user->password) ))
        {
            return response()->json(['error' => 'invalid_credentials'], 401); …
    Run Code Online (Sandbox Code Playgroud)

authentication api cookies jwt laravel-5

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

在微服务架构中发送电子邮件

抱歉我的英语 - 如果有些事情不清楚请在评论中问我 - 我会澄清这一点.

我在微服务架构中构建系统.我有一个服务包含用户信息,一个服务用于"优惠",一个服务用于"创意".服务"提供"和"想法"通过Restful API(登录和其他操作)提供"用户"服务.我想知道 - 如何处理电子邮件?每个服务都有单独的前端,并在某些操作后发送电子邮件(例如,当某些第三人打开链接时,某些提供创建此优惠的用户将收到电子邮件,或者当某个用户创建想法时,管理员将收到电子邮件).此外,在每个服务前端,经理可以使用季节统计数据或其他一些信息创建"定期"邮件.每个服务电子邮件的外观不同,内容也不同.

我有很多选择,不知道哪个更好.这是一些主张:

  1. 每个服务都有自己独立的电子邮件系统,并发送各种电子邮件(行动后和定期)独立.
  2. "用户服务"具有发送动作的"引擎"以及定期发送的电子邮件和其他服务.内部任务中有指向任务的服务链接,该链接将生成电子邮件内容(例如定期电子邮件中的女巫统计数据).这个解决方案很复杂......
  3. "用户服务"只有定期发送电子邮件的引擎(任务有生成电子邮件正文的链接......)但是每个微服务独立者发送操作后发送电子邮件
  4. 创建新的微服务仅用于使用适当的API发送电子邮件(定期和"行动后").当然,像"商品"这样的服务也应该在邮寄任务中发送链接(自己) - 这个链接将在定期发送电子邮件时被调用,此链接的响应将生成电子邮件正文....

哪一个会更好?或者可能有更好的选择?

email rest email-integration restful-architecture microservices

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

Ionic2如何在提供程序中获取NavController

我创建了AuthHttpProvider,它是Http包装器,允许发送GET/POST/PUT/DELETE请求并自动为每个请求添加身份验证令牌(jwt).我在所有的ionic2应用程序中使用这个包装器而不是Http.现在,当我检测到来自服务器的任何响应有403 Http错误代码时,我想注销用户(并转到loginPage).

因此,当我尝试在构造函数中注入NavController(在403检测后将其用于loginPage)

constructor (public navCtrl: NavController)
Run Code Online (Sandbox Code Playgroud)

我明白了:

Uncaught (in promise): Error: No provider for NavController
Run Code Online (Sandbox Code Playgroud)

如何访问Provider内的navCtrl?

navigation dependency-injection ionic2 angular

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

postgresql 客户端 - 在 php:5-apache 上安装

我在做一些旧项目(Laravel 4.2、php5.6、postgresql),我想在 docker 上设置它——这是我的dockerfile

FROM php:5-apache

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN apt-get update

RUN apt-get install -y \
    git \
    nano \
    libpng-dev \
    libmcrypt-dev \ 
    postgresql-dev \  
    zlib1g-dev \
    zip \
    unzip &&\
    a2enmod rewrite

RUN docker-php-ext-install pdo &&\
    docker-php-ext-install pdo_mysql &&\
    docker-php-ext-install pdo_pgsql &&\
    docker-php-ext-install zip &&\
    docker-php-ext-install gd &&\
    docker-php-ext-install pcntl &&\ 
    docker-php-ext-install mcrypt

# COPY php.ini /usr/local/etc/php/php.ini
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

E: 无法定位包 postgresql-dev

当我更改postgresql-devpostgresql(并FROM php:5-apache-jessie使用不同的组合更改图像时:RUN dpkg --configure -a && …

postgresql docker php-5.6

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

将字符串拆分为1-3个单词的字符串数组,具体取决于长度

我有以下输入字符串

Lorem ipsum dolor坐在ame consectetur adipiscing elit sed doeiu​​smod tempor incididunt ut Duis aute irure dolor in presrenderit in esse cillum dolor eu fugia ...

通过示例拆分规则

[
     "Lorem ipsum dolor",  // A: Tree words <6 letters  
     "sit amet",           // B: Two words <6 letters if next word >6 letters
     "consectetur",        // C: One word >=6 letters if next word >=6 letters
     "adipiscing elit",    // D: Two words: first >=6, second <6 letters
     "sed doeiusmod",      // E: Two words: firs<6, second …
Run Code Online (Sandbox Code Playgroud)

javascript

6
推荐指数
3
解决办法
284
查看次数

将第三方js文件导入angular typescript项目

在我的角度体验中,我被迫使用四种不同的方式包括第三方库poliglot.js(用于multilang).

所以能new Polyglot(...)在我的Lang课程中使用:

export class Lang
{
    ...
    constructor() {

        this.polyglot = new Polyglot({ locale: 'en' });
        ...        
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我用这四种方法

A.在我很老的(2016)angular2(基于framerwork angular2-webpack-starter)项目中(目前这个解决方案由于缺乏require新角度项目的指令而无效):

var Polyglot = require('../../../node_modules/node-polyglot/build/polyglot.min.js');
Run Code Online (Sandbox Code Playgroud)

B.在我的下一个项目angular4(基于angular2-webpack-starter):

import Polyglot from '../../../node_modules/node-polyglot/build/polyglot.min.js'; 
Run Code Online (Sandbox Code Playgroud)

C.在我最近在Laravel项目中嵌入的angular5项目(基于angular-cli)

import * as Polyglot from '../../../node_modules/node-polyglot/build/polyglot.min.js';
Run Code Online (Sandbox Code Playgroud)

D.我还发现了第4个解决方案,它适用于我的jQuery旧角度项目(基于angular2-webpack-starter)(并且互联网上的人们提到了很多这个解决方案)但我使用Polyglot示例写下来:

import '../../../node_modules/node-polyglot/build/polyglot.min.js';
declare var Polyglot: any;

// declare var $:any   // this is for jquery (as example)
Run Code Online (Sandbox Code Playgroud)

问题是:这四种解决方案之间的区别什么?是什么原因导致在某个项目中一个解决方案有效但其他解决方案无效

javascript typescript lib angular

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

ANGULAR 7 重新加载组件视图

我想通过单击按钮图标重新加载组件视图,而不刷新整个页面。

我的查看代码:

<nb-card>
  <nb-card-header>
    <div class="row" style="font-size: 2.125rem !important;">
      <div class="col-sm-8">
        Tableau des Casiers 
      </div>
      <div class="col-sm-4 d-flex justify-content-end">
        <nb-action icon="ion-refresh sizeicone" (click)="refresh()"></nb-action>
      </div>
    </div>
  </nb-card-header>

  <nb-card-body>
    <ng2-smart-table [settings]="settings" (custom)="onCustom($event)" [source]="source"
      (deleteConfirm)="onDeleteConfirm($event)" (editConfirm)="onSaveConfirm($event)"
      (createConfirm)="onCreateConfirm($event)">
    </ng2-smart-table>
  </nb-card-body>
</nb-card>
Run Code Online (Sandbox Code Playgroud)

angular

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

为什么这里的输出为0。var a = 7; a.constructor();

让我们看下面的例子:

Q1:为什么0这里输出?这是什么意思?

var a = 7;
console.log(a.constructor()); // prints 0 (Why?)
Run Code Online (Sandbox Code Playgroud)

问题2:何时typeof atypeof 7两者都是数字,为什么a.constructor()运行而7.constructor()没有?

var a = 7; 
var bool = typeof a === typeof 7;

console.log(a.constructor()); // 0
console.log((++a).constructor()); // 0

console.log(7.constructor()); // SyntaxError: Invalid or unexpected token
console.log(++a.constructor()); // ReferenceError: Invalid left-hand side expression in prefix operation
Run Code Online (Sandbox Code Playgroud)

javascript numbers

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

Create nested array in Javascript

I'm trying to convert my data from API to my needs. Would like to create a nested array from plain array. I would like to group elements by parentId property, if parentId would not exist I would put it as a root. id value is unique. Like so (raw data):

[
    {id: 1, name: 'sensor'},
    {id: 2, name: 'sensor', parent: 1},
    {id: 3, name: 'sensor', parent: 1},
    {id: 4, name: 'sensor', parent: 3},
    {id: 5, name: 'sensor'},
    {id: 6, name: …
Run Code Online (Sandbox Code Playgroud)

javascript

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

在不带画布的纯JS中生成图像

如何在没有画布的情况下从纯像素数组生成纯JavaScript(无外部库)中的图片?我尝试以URI形式生成图像,但没有成功(图片格式不容易快速理解和实现)

javascript graphics image data-uri

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