如何从公共目录获取Larvel5.3会话数据或身份验证数据?

时间:2016-10-30 19:27:11

标签: session laravel-5 laravel-5.3

我在公共目录中写了一些php函数,因为我必须使用外部库。 然后,我无法从我使用下面的PHP脚本

测试的控制器中检索任何会话数据和身份验证数据
session_start();
var_dump($_SESSION['user']);

我已经从AdminMiddlware获得了初始会话数据 在Resource->视图目录中使用它非常棒,但不能公开。

namespace App\Http\Middleware;

use App\User;
use Closure;
use Illuminate\Support\Facades\Auth;

class AdminMiddleware
{

/**
 * Handle an incoming request. User must be logged in to do admin check
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */

public function handle($request, Closure $next)
{

    $user = User::find(\Auth::user()->id);
    if ((int) $user->is_admin == (int) config('auth.guards.is_admin')) {

        $collection = collect(Auth::user());
        $thisdata   = $collection->toArray();
        $request->session()->put('user', $thisdata);

        return $next($request);
    }

    return redirect()->guest('/');

}}

2 个答案:

答案 0 :(得分:2)

好的,我能看到让Laravel与之合作的最简单方法是:

(如果您还没有这样做)复制

function newO(){
  return {
    "key": "value"
  };
}
// call a
var x = new newO();
// call b
var x = new newO;
// call c
var x = newO();

public/gallery/scripts/filemanager.config.default.json 

然后将public/gallery/scripts/filemanager.config.json (第25行)设置为"fileConnector",例如

"/authenticate-filemanager",

这将告诉您的"fileConnector": "/authenticate-filemanager", 应用程序通过路由Filemanager加载。

接下来,转到/authenticate-filemanager,在底部将public/gallery/connectors/php/application/FmApplication.php更改为if(!auth()),这将告诉应用程序在Laravel中使用内置身份验证。

然后你需要设置实际路线(这基本上是没有if(!auth()->check())功能的filemanager.php的内容):

auth()

因为Route::match(['GET', 'POST'], 'authenticate-filemanager', function () { require_once(public_path('gallery/connectors/php/application/Fm.php')); require_once(public_path('gallery/connectors/php/application/FmHelper.php')); $config = []; $fm = Fm::app()->getInstance($config); $fm->handleRequest(); }); GET调用都是针对相同的端点POST进行的。确保不要将此路由放在auth中间件后面。

最后,您只需转到match并将app/Http/Middleware/VerifyCsrfToken.php添加到'authenticate-filemanager'数组,以禁用该路由的csrf。

希望这有帮助!

答案 1 :(得分:1)

RichFilemanger版本的更新。 2.7.6 Laravel 5.6

我在管理面板的HTML文本编辑器中使用RichFilemanager。因此,请检查管理员用户是否已登录。

  1. 在public /../ RichFilemanager / config / filemanager.config.json中

    "connectorUrl": "/admin/authenticate-filemanager",

  2. 在route / web.php中

    Route::match(['GET', 'POST'], '/admin/authenticate-filemanager', function () {
    
    //Here check is admin or user is authenticated. Can use: auth()->check()
    $isAuth = \App\Libraries\Admin\AdminBLL::isAuth();
    if(!$isAuth){
        return 'Not authenticated';
    }
    
    return require_once(public_path('assets/plugins/RichFilemanager/connectors/php/filemanager.php'));
    

    });

  3. 就像罗斯威尔逊以前写的那样:最后,您只需要转到app/Http/Middleware/VerifyCsrfToken.php并将'admin/authenticate-filemanager'添加到$ except数组即可禁用该路由的csrf。

  4. 最后一个-设置文件在public/../RichFilemanager/connectors/php/filemanager.php中的文件夹位置

    $local->setRoot('userfiles/filemanager', true, true);