【问题标题】:Laravel basic-authLaravel 基本身份验证
【发布时间】:2013-07-04 01:16:33
【问题描述】:

我想为我的网页使用basic.auth,但身份验证不起作用

routes.php

admin - 身份验证

Route::get('admin', array('before' => 'auth.basic', function()
{
    return 'Top secret';
}));

create - 创建测试用户

Route::get('create', function()
{
    $user = new User;
    $user->email = 'test@test.com';
    $user->username = 'test';
    $user->password = Hash::make('password');
    $user->save();
});

配置

  • app/config/app - 已定义 key(创建 Laravel 安装)
  • app/config/auth - 已定义 model (User) 和 table (users)

filters.php

auth.basic

Route::filter('auth.basic', function()
{
    return Auth::basic();
});

测试

我调用/create创建用户test@test.com:password

这是users 之后的表:

然后我打电话/admin登录

但它不让我进入。在 Login 之后 - 它只是清除输入。在 Cancel 之后 - 它返回 Invalid credentials.


用户模型

我尝试实现UserInterface

<?php
use Illuminate\Auth\UserInterface;

class User extends Eloquent implements UserInterface {

    protected $table = 'users';

    /**
     * Get the unique identifier for the user.
     *
     * @return mixed
     */
    public function getAuthIdentifier()
    {
        return $this->getKey();
    }

    /**
     * Get the password for the user.
     *
     * @return string
     */
    public function getAuthPassword()
    {
        return $this->passsword;
    }
}

问题已解决

我在User 模型return $this-&gt;passsword; 中有错字有3 个s

现在我使用默认的 Laravel User model

【问题讨论】:

  • 1) 你有任何属性修饰符是User模型吗? - 特别是对于密码(我有一个自动散列给定值的设置器,所以我对我的密码进行了双重散列)和 2)你尝试过其他浏览器吗?
  • @RobGordijn - 1) 用户模型只有 - class User extends Eloquent {}。 2) 谷歌浏览器,火狐
  • 你的用户模型是否实现了UserInterface???
  • 看看 Laravel 4 附带的默认 User.php 模型。
  • 你到底在哪里看?这是 Laravel 4 附带的默认模型:github.com/laravel/laravel/blob/master/app/models/User.php

标签: laravel laravel-4


【解决方案1】:

确保在 app/config/auth.php - driver 设置为 eloquent

您可能还需要实现 UserInterface 接口 (class User extends Eloquent implements UserInterface) - 然后您需要在模型中包含这些方法:

/**
 * Get the unique identifier for the user.
 *
 * @return mixed
 */
public function getAuthIdentifier()
{
    return $this->getKey();
}

/**
 * Get the password for the user.
 *
 * @return string
 */
public function getAuthPassword()
{
    return $this->password;
}

【讨论】:

  • 是的,它设置为 eloquent | auth.php - 'driver' =&gt; 'eloquent'
  • 你的回答很好......我在return $this-&gt;passsword; 中有错字 - 3x s
  • 哦,太好了,PEBKAC 错误。是的,这些对我们来说很难诊断:)
猜你喜欢
  • 2021-06-20
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 2014-12-31
  • 2018-10-24
  • 2016-10-12
  • 1970-01-01
相关资源
最近更新 更多