当前位置: 首页 > 知识库问答 >
问题:

将active添加到Auth::attempt返回false与active=>1,但罚款没有active=>1?

笪德华
2023-03-14

我正在使用PHPUnit进行测试。这是我的班级,不及格测试用粗体表示:

    //Check that the database is clean
    public function testNoUsers(){
        $users = User::all();
        $this->assertEquals(count($users), 0);
    }

    //Test that users can login and a find and search works.
    public function testUserRegistrationAndSave(){

        User::create(array(
            'email' => 'thisisatest@gmail.com',
            'password' => Hash::make('first_password')
        ));

        $user = User::where('email', '=', 'thisisatest@gmail.com')->first();
        $this->assertEquals('thisisatest@gmail.com', $user->email);
    }


    //Make sure that the email is a proper email address
    public function testShouldNotSaveWithInvalidEmail(){
        $invalidUser = new User(array(
            'email' => 'thisisatest',
            'password' => Hash::make('first_password')
        ));

        $this->assertEquals($invalidUser->save(), false, 'Incorrect email address');
    }

    //Make sure that if the email is not filled out, it can't be saved.
    public function testEmailIsFilled(){
        $invalidUser = new User(array(
            'password' => Hash::make('first_password')
        ));

        $this->assertEquals($invalidUser->save(), false, 'Email not filled out!');
    }

    public function testUserActive(){
        $invalidUser = new User(array(
            'email' => 'test@test.com',
            'password' => Hash::make('first_password')
        ));

        $invalidUser->save();

        //Has active = 1
        $validUser = new User(array(
            'email' => 'test@test.com',
            'password' => Hash::make('first_password'),
            'active' => 1
        ));
        $validUser->save();




        //User with no active can't login
        $login = $invalidUser->login();
        $this->assertEquals(false, $login, 'Inactive user logged in');

        var_dump($validUser->active); //This outputs 1
        //Reset password to plaintext
        $validUser->password = "first_password";
        $login = $validUser->login();
        **$this->assertEquals(true, $login, 'Active user logged in');** //Error is here
    }

}

这是我的登录方法。当我添加active时,返回FALSE=

使用Illumb\Auth\UserInterface;使用Illumb\Auth\Employers\EmployableInterface;

类用户扩展模型实现UserInterface, RemindableInterface{

protected $fillable = array('email', 'password');
protected $softDelete = true;

/**
 * The database table used by the model.
 *
 * @var string
 */
protected $table = 'users';

/**
 * The attributes excluded from the model's JSON form.
 *
 * @var array
 */
protected $hidden = array('password');

protected static $rules = array(
    'email' => 'required|email|unique:users|min:4'
);

/**
 * 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;
}

/**
 * Get the token value for the "remember me" session.
 *
 * @return string
 */
public function getRememberToken()
{
    return $this->remember_token;
}

/**
 * Set the token value for the "remember me" session.
 *
 * @param  string  $value
 * @return void
 */
public function setRememberToken($value)
{
    $this->remember_token = $value;
}

/**
 * Get the column name for the "remember me" token.
 *
 * @return string
 */
public function getRememberTokenName()
{
    return 'remember_token';
}

/**
 * Get the e-mail address where password reminders are sent.
 *
 * @return string
 */
public function getReminderEmail()
{
    return $this->email;
}

**public function login(){
    if(Auth::attempt(array('email' => $this->email, 'password' => $this->password, 'active' => 1), true)){
        return true;
    }else{
        return false;
    }
}**

}

我正在使用phpunit4对SQLite运行测试。迁移添加了默认值为1的活动字段,因此我不确定这为什么不起作用。

共有1个答案

万修然
2023-03-14

您必须手动完成,但很容易:

public function login()
{
    $loggable = $user = User::where('email', $this->email) && 
                Hash::check($this->password, $user->password) &&
                $user->active;

    if ($loggable)
    {
        Auth::login($user);
    }

    return $loggable;
}
 类似资料:
  • 描述 (Description) :active伪类用于向激活的元素添加特殊效果。 在 ... 块中定义伪类时,应注意以下几点 - a:hover必须在a:link和a:在CSS定义中访问才能生效。 a:主动必须在a:hover in CSS定义后才能生效。 伪类名称不区分大小写。 伪类与CSS类不同,但它们可以组合在一起。 可能的值 (Possible Values) color - 任何有效的

  • Active Record 回调 本文介绍如何介入 Active Record 对象的生命周期。 读完本文,你将学到: Active Record 对象的生命周期; 如何编写回调方法响应对象声明周期内发生的事件; 如何把常用的回调封装到特殊的类中; 1 对象的生命周期 在 Rails 程序运行过程中,对象可以被创建、更新和销毁。Active Record 为对象的生命周期提供了很多钩子,让你控制程

  • Framework7 uses so called "active state" to highlight links and buttons when you tap them. It is done to make F7 app behave like native app, not like web app. Active state is a part of built-in Fast C

  • Active Merchant 是 Shopify 电子商务系统的提取(extraction) 。它发展了 Ruby on Rails 网络应用程序的用途,能够作为一个 Rails 插件实现无缝集成,当然它也可以单独作为一个 Ruby 库使用。 Active Merchant 自创建以后就被用于现在 Ruby 应用程序中,用来处理金融交易 。 下面程序示例展示了如何使用个人信用卡购买东西的过程:

  • Active CMS 是一个非常简单的内容管理系统,主要用于个人网站。使用 OOP PHP5/MySQL 和 jQuery/Ajax 开发,管理界面很轻量级,使用简单。

  • 问题内容: 动态标题,使用PHP将CSS类更改为活动目录(目录) 我希望标记的类在活动目录下更改…现在,每个指南都向我展示了当您的页面等于它时如何执行此操作,但是我想根据目录上的内容更改它 网址设置: 该URL是教程的页面。…在“ tutorials”目录下,在“CSS”类别目录下,而不是页面标题(所有这些目录都不是真实的,都是从.htaccess重写的)。不相关的] 导航设置: 问题答案: 想通