小编ome*_*ooq的帖子

LoginUsingId的Laravel问题(手动验证)

我正在尝试在多个域上实现单点登录.这个概念非常简单,即发送唯一的用户令牌,然后验证这些令牌以找到用户,然后将其登录.

现在在验证令牌然后抓住用户之后,我做了类似的事情

$loggedInUser = Auth::loginUsingId($user->id, true);
Run Code Online (Sandbox Code Playgroud)

现在我有一个自定义中间件,它首先检查登录用户,即

Auth::Check()
Run Code Online (Sandbox Code Playgroud)

以上工作首次正常.但是刷新时Auth :: check()没有经过验证.我也尝试使用所有不同的会话驱动程序,但仍然无法正常工作.

我在laravel 5.2上使用了类似的代码,它确实有效.但是在laravel 5.3上它没有验证持久性请求.

编辑:让我告诉你我的代码 我没有修改AuthServiceProvider或任何其他警卫.我在目录中有用户模型,但我修改了auth.php中的路径.

这是domain1指向的路线:

http://domain2.com/ {{$ role}}/{{$ route}}/singlesignon/{{$ token}}

然后通过loginController中的verifySingleSignOn方法获取它,该方法接收用户从其他域进入的角色和路由以及令牌.然后,用户将重定向到相同的路由,但在domain2上.在这里,我可以在手动登录之前成功接收用户ID.

public function verifySingleSignOn($role, $route, $token)
    {
        // Fetch Single Signon
        $userRepository = new UserRepository();
        $user = $userRepository->checkForSingleSignOnToken($token, ['id']);

        // Check if Token Exists
        if (isset($user->id) && is_int($user->id) && $user->id != 0) {

            // Manually Logging a user (Here is successfully recieve the user id)
            $loggedInUser = Auth::loginUsingId($user->id);

            if (!$loggedInUser) {
                // If User …
Run Code Online (Sandbox Code Playgroud)

laravel laravel-5 laravel-5.3

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

单个Laravel路由,用于多个控制器

我正在创建一个项目,我有多种用户类型,例如.superadmin,admin,managers等.一旦用户通过身份验证,系统将检查用户类型并将其发送到相应的控制器.中间件的工作正常.

因此,当经理访问http://example.com/dashboard时,他会看到管理员信息中心,而当管理员转到相同的链接时,他可以看到管理信息中心.

以下路线组可单独工作,但放在一起时只有最后一个工作.

/*****  Routes.php  ****/
 // SuperAdmin Routes
    Route::group(['middleware' => 'App\Http\Middleware\SuperAdminMiddleware'], function () {
        Route::get('dashboard', 'SuperAdmin\dashboard@index'); // SuperAdmin Dashboard
        Route::get('users', 'SuperAdmin\manageUsers@index'); // SuperAdmin Users
    });

 // Admin Routes
    Route::group(['middleware' => 'App\Http\Middleware\AdminMiddleware'], function () {
        Route::get('dashboard', 'Admin\dashboard@index'); // Admin Dashboard
        Route::get('users', 'Admin\manageUsers@index'); // Admin Users
    });
Run Code Online (Sandbox Code Playgroud)

我知道我们可以重命名路线,如superadmin/dashboard和admin/dashboard,但我想知道是否有其他方法可以实现清洁路线.有没有人知道任何任何工作?

顺便说一下,我正在使用LARAVEL 5.1

任何帮助表示赞赏:)

php laravel laravel-routing laravel-5

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

以编程方式更改Tab键顺序

如何以编程方式重新排序选项卡TabControl?我需要根据某些条件对选项卡进行排序.

如果可以通过设计器进行重新排序,我想我们必须能够在运行时通过代码来完成.

c# tabcontrol tabpage winforms

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

需要在单个资源控制器中使用Entrust角色的建议 - Laravel5

我正在开发一个控制面板应用程序,我有几个用户角色,如globaladmin,编辑器等.现在我想将这些角色与单个UserController资源一起使用.

例如,globaladmins应该能够执行所有Restful方法,而编辑器只能查看和更新​​用户.

我知道委托带有开箱即用的中间件,这非常适合我需要的东西.但它只适用于路由(在这种情况下,我需要为每个角色分别使用控制器).

我的UserController看起来像这样.

Class UserController extends BaseController
{
     $protected $viewfolder;
     public function __construct
     {
        // Checking for role and then assigning the folder name of the views
        $role = User::getRole();
        switch($role)
        case 'globaladmin':
              $this->viewfolder = 'globaladmin';
              break;
        case 'editor':
              $this->viewfolder = 'editor';
              break;
        default:
              abort(401, 'Access Denied');
              break;
     }

     public function index(){
        if( Entrust::can('view-all-users') ){
            $users = User:all();
        }
        return view( $this->viewfolder.'.users.viewuser', compact('users'));
     }
     public function create()
     public function update()
     public function delete()
}
Run Code Online (Sandbox Code Playgroud)

我需要在构造函数中使用中间件来检查用户角色,然后仅在角色有权使用它时才允许使用该方法.但是这应该以一种体面的方式完成,没有任何黑客攻击,因为我也将在其他控制器上使用它.

php acl user-roles laravel-5

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

Amazon S3 Bucket 策略,只允许一个域访问文件

我有一个 S3 存储桶,里面有一个文件。我只希望某个域能够访问该文件。我在存储桶上尝试了一些策略,但都不起作用,这个来自AWS 文档

{
    "Version": "2012-10-17",
    "Id": "http referer policy example",
    "Statement": [
        {
            "Sid": "Allow get requests originated from www.example.com and example.com",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket-name/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "http://www.phpfiddle.org/*",
                        "http://phpfiddle.org/*"
                    ]
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

为了测试该文件,我在 phpfiddle.org 上托管了一个代码并拥有此代码。但是我既不能通过直接从浏览器访问,也不能通过 phpfiddle 代码访问该文件。

<?php 
    $myfile = file_get_contents("https://s3-us-west-2.amazonaws.com/my-bucket-name/some-file.txt");
    echo $myfile;
    ?>
Run Code Online (Sandbox Code Playgroud)

这里是文件的权限,bucket本身也有同样的权限+上面的策略。

在此处输入图片说明

这只是一个示例链接,而不是实际工作的链接。

amazon-s3 same-origin-policy amazon-web-services

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

Laravel的中间件不在Controller上工作

我有一个名为'AdminMiddleware'的中间件,它正在类的构造函数中使用.由于某些原因,虽然正在运行构造函数,但是没有从构造函数中调用中间件.我尝试在adminMiddleware文件上进行模具转储,但似乎只是忽略了这个文件.

namespace App\Http\Controllers\SuperAdmin;

    use Illuminate\Http\Request;

    use App\Http\Requests;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Auth;

        class dashboard extends Controller
        {
            protected $user;

            public function __construct()
                {
                    $this->middleware('admin');
                    $this->user = Auth::User();
                }

//Kernel.php
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'superadmin' => \App\Http\Middleware\SuperAdminMiddleware::class,
        'admin' => \App\Http\Middleware\AdminMiddleware::class,
    ];
Run Code Online (Sandbox Code Playgroud)

对于某些项目要求,我无法直接在路线上使用中间件.任何帮助表示赞赏,我正在使用laravel 5.1.

middleware laravel laravel-5

4
推荐指数
2
解决办法
9772
查看次数

Laravel 仅在不存在相关模型时才删除模型

假设我有一个名为“制造商”的模型,这个模型与另一个模型“车辆”有一对多的关系。现在,如果有任何与此型号相关的车辆,我不想让用户删除制造商。

//In Manufacturer model

public function vehicles()
{
    return $this->hasMany('Vehicle');
}
Run Code Online (Sandbox Code Playgroud)

在存储库/控制器中,我有另一种方法来检查它。

public function checkAssociatedVehicles($id)
{
    return Manufacturer::with('vehicles')->find($id)->toJson();
}
Run Code Online (Sandbox Code Playgroud)

这确实输出了所有相关车辆的制造商数据。但这效率不高,所以我只想检查一下是否有一辆汽车,然后不要删除制造商。

php laravel eloquent laravel-5

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

使用css创建描边帧效果

我有一个具有这种效果的设计

在此输入图像描述

我不关心字体样式或任何细节,我现在关注的是创建框架,如果可能的话,按钮也是如此.有谁知道如何在CSS中做这种效果?

这是我非常基本的html/css代码,甚至没有任何帮助.如果它更适合你,你可以完全修改它.顺便说一句,我正在使用bootstrap 3.

/******** The html *********/
    <div class="col-md-12 bg-img">
        <div>Italy has never been so close</div>
    </div>

/******** The css *********/
    .bg-img {
      display: table;
      width: 100%;
      height: 100px;
      text-align: center;
      background: #999 url("http://p1.pichost.me/i/15/1380265.jpg") no-repeat fixed center;
    }

    .bg-img div {
      display: table-cell;
      vertical-align: middle;
    width:10px;
      font-weight:700;
    }
Run Code Online (Sandbox Code Playgroud)

我使用的是通用图像,因为它不应该有任何区别.这是小提琴. https://jsfiddle.net/3aL4xnr8/

html css html5 svg css3

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

Laravel - 软删除的严重问题

我有 2 个模型,车辆和制造商。制造商与车辆有一对多的关系。我在两个模型上都启用了软删除。我有一个所有车辆的 html 表,它显示了 html 表中的标题、slug、manufacturer_id 和 deleted_at(laravel 默认)字段。

现在,当我从其页面软删除车辆时,一切正常,并显示所有车辆 + 软删除的车辆。同样,如果我删除该车辆的制造商,我仍然会看到所有制造商+软删除的制造商。现在当我回到车辆页面时出现问题,我收到一条错误消息

Trying to get property of non-object 
Run Code Online (Sandbox Code Playgroud)

这意味着它正在寻找不再存在的制造商 ID。这是我获得所有车辆的雄辩查询

// Vehicle Controller
/* This query basically gets all fields in the first column from vehicle model
   and all the fields in the second column from manufacturer model*/

   $this->vehicle->getAllWithTrash( 
       ['id', 'title', 'description', 'is_active', 'manufacturer_id', 'created_at', 'updated_at', 'deleted_at'],
       ['title', 'id'] 
   ) );


// Eloquent Repository
   public function getAllWithTrash( $columns1 = array('*'), $columns2 = array('*') ){

        return Vehicle::withTrashed()->with(['manufacturer' => function($q) use …
Run Code Online (Sandbox Code Playgroud)

laravel eloquent laravel-5 laravel-5.1

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

Laravel 关于在 s3 上解压缩文件的建议

我有一个用户上传 zip 文件的表单。我正在使用文件系统。

是否可以将文件上传到 S3,然后在那里解压缩文件?

或者

我应该先解压缩文件,然后将它们上传到 S3。

压缩后的文件夹中有很多文件(大约 500-600 个小文件),那么 Laravel 如何处理如此大量的文件?系统会在文件上传时停止运行还是在后台继续运行?像一个队列

unzip amazon-s3 laravel laravel-5

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

在自定义主题或插件中包含 ACF(高级自定义字段):在分发时导出字段

我正在开发一个自定义主题,并在该主题中包含了 acf pro,如文档中所述。主题工作正常,主题激活时激活了 acf。这是代码。

// customize ACF path
add_filter('acf/settings/path', 'my_acf_settings_path');
function my_acf_settings_path( $path ) {
    $path = get_stylesheet_directory() . '/inc/advanced-custom-fields-pro/';
    return $path;
}
// customize ACF dir
add_filter('acf/settings/dir', 'my_acf_settings_dir');
function my_acf_settings_dir( $dir ) {
    $dir = get_stylesheet_directory_uri() . '/inc/advanced-custom-fields-pro/';
    return $dir;
}
// Include ACF
include_once( get_stylesheet_directory() . '/inc/advanced-custom-fields-pro/acf.php' );
Run Code Online (Sandbox Code Playgroud)

我现在面临几个小时的问题是由于我想在 acf 中实例化的组/字段。我有一些想要在全新安装时显示的字段组。以下是我尝试过的方法:

方法 1: 我已将字段作为 json 导出到名为acf-json. ACF 确实识别它并显示为同步字段。但是当我尝试同步它时,它只会创建一个新的空字段。

方法 2: 我也尝试将字段组导出为 php 文件,然后将其包含在我的 functions.php 文件中,但 acf 无法识别此代码。

wordpress json wordpress-theming advanced-custom-fields

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