当Eloquent Model名称为'Account'而非'User'时,Laravel Auth :: check不起作用

时间:2013-12-13 20:33:01

标签: authentication laravel-4 eloquent

我的用户数据库表名为' account' (我使用单数名称)和'帐户'是auth用途的型号名称。我在模型上定义了table属性并更改了config / auth.php,如下所示:     

class Account extends Ardent implements UserInterface, RemindableInterface 
{
protected $guarded = array(
    'id',  // the key is just 'id' so should be ok
    'password'
//...
    protected $table = 'account';
//...
}
<?php # config/auth.php
return array(
    'driver' => 'eloquent',
    'model' => 'Account',
    'table' => 'account',  
//...
}

然后登录等我有一个AuthController:

class AuthController extends BaseController 
{
    public function login($params = null)
{
        if (Auth::check()) {  // always returns false?
            return Redirect::route('home.splash')->with('messaage', 'You are already logged in');
        }
        //...
        if (Auth::attempt($credentials, true)) {  // this works fine
            return Redirect::route("auth.welcome"); 
}
/...
}

我还在标题视图中有代码,它引用Auth :: check()来显示登录或注销链接,但它似乎总是返回false,因此登录用户会显示登录链接。 Auth :: attempt确实可以正常登录用户。我错过了什么?

<小时/> 编辑12/18/2013 虽然我发现了2个与之相关的错误,但它们都没有解决问题,但是在这里它们加上了一个来自迁移器的有趣错误,我认为可能值得一个比我看起来更聪明的人。 首先,我的2个相关错误:

1 - 在bootstrap/start.php中,在envt检测中,我有'testing' => array('*local*')导致会话无法使用。

2 - 我有一个错位的关闭}错误地导致我成功登录页面,而实际上没有成功登录。所以在我原来的帖子中,在我说尝试部分正在工作的地方是不正确的。事实并非如此。

这是更有趣的部分。我对nnn_create_account_table迁移进行了更改,将密码更改为string('password', 64),然后尝试运行migrate:refreshmigrate:reset,这两个都发出了此错误:

“message”:”Class 'CreateUsersTable' not found”,”file”:”(...project_dir...)\vendor\laravel\framework\src\Illuminate\Database\Migrations\Migrator.php”,”line”:301

然后我对整个项目文件夹进行了搜索,找不到文本&#39; CreateUsersTable&#39;在某些日志中除外。为什么Laravel这样做?这是一个错误吗? 我最终运行了一个简单的migrate命令(没有刷新或重置命令的一部分)它工作,或者至少,它没有在CLI给出错误,但我的代码使用Auth方法仍然不会工作。

我继续前进,打算使用这个https://github.com/andrew13/Laravel-4-Bootstrap-Starter-Site启动平台并尝试基于它构建我的应用。我会放弃并与用户&#39;而不是&#39;帐户&#39;对于我的用户表。

0 个答案:

没有答案