通过Windows身份验证在Laravel中验证用户

Cla*_*key 4 php authentication iis laravel laravel-5

我在IIS 7.5上的Windows域中运行PHP.

Windows身份验证通过IIS打开,因此用户DOMAIN\USERNAME可通过$_SERVER['AUTH_USER']PHP获得.

我刚刚为一个新的内部网站安装了Laravel 5,并且需要一种方法来使用单点登录方式对Laravel中的用户进行身份验证.

最终用户应该在Laravel中进行身份验证,而无需在任何地方登录,因为他们已经对域进行了身份验证.

我四处搜索,字面上找不到任何相关内容!

有什么关于这个的吗?当然它是一个非常常见的用例?我应该从哪里开始阅读,或者是否有人可以直接帮助?

Luc*_*eos 5

假设$_SERVER['AUTH_USER']已设置,您可以在以下内容中使用以下内容App\Http\Middleware\Authenticate:

<?php namespace App\Http\Middleware;

use Closure;
use App\User;
use Illuminate\Contracts\Auth\Guard;

class Authenticate {

    /**
     * The Guard implementation.
     *
     * @var Guard
     */
    protected $auth;

    /**
     * Create a new filter instance.
     *
     * @param  Guard  $auth
     * @return void
     */
    public function __construct(Guard $auth)
    {
        $this->auth = $auth;
    }

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if ($request->server('AUTH_USER') && ($user = User::where('username', $request->server('AUTH_USER'))->first()))
        {
            $this->auth->login($user);
        }
        else
        {
            return redirect()->guest('auth/login');
        }

        return $next($request);
    }

}
Run Code Online (Sandbox Code Playgroud)

现在将中间件添加到您的路由.

但是,假设您的用户已经存在.如果用户不存在,您可以更改重定向以动态创建用户(如果需要).