【问题标题】:Authenticating users in Laravel via Windows Authentication通过 Windows Authentication 在 Laravel 中对用户进行身份验证
【发布时间】:2015-09-09 01:13:25
【问题描述】:

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

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

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

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

我已经四处搜索,实际上找不到任何相关的东西!

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

【问题讨论】:

  • 我不认为这是一个很常见的用例,大多数服务器都是基于 linux 而不是 windows,因为 ms 技术成本更高。因此,只有当您做一些与 MS 相关的事情(例如 C# 项目)时,您才会更喜欢 MS。您基本上想要的是一些独特的东西来识别您的数据库上的用户。然后将该独特的东西与 $_SERVER['AUTH_USER'] 独特属性进行比较,并像往常一样登录该用户。对此不确定,但我想到了什么

标签: php authentication laravel iis laravel-5


【解决方案1】:

假设 $_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);
    }

}

现在添加middleware to your routes

但这确实假设您的用户已经存在。如果用户不存在,您可以更改重定向以动态创建用户。

【讨论】:

  • 谢谢,因为Authenticate.php 不存在,我不仅要添加文件,还要在kernel.php 上的$middleware 中注册它,然后必须在$routeMiddleware 使用自定义名称,保持旧的身份验证不变。我似乎也不需要 Guard、构造和道具,这个用例是什么?没有它,它会工作吗?只是不安全?
猜你喜欢
  • 2020-07-19
  • 1970-01-01
  • 2017-07-03
  • 2016-04-15
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多