认证使用

目录

提示: 使用Auth类之前, 你必须 定义一个session驱动.

Salting和Hashing

如果您正在使用的Auth类, 希望能够Salting和Hashing所有密码. Web开发必须做负责任. 针对用户密码进行Salting和Hashing加密, 将使基于彩虹表的攻击变得不大可能.

Salting和Hashing加密功能实现在Hash类中. Hash类使用** bcrypt**哈希算法.看下这个例子:

$password = Hash::make('secret');

Hash类的make方法将返回一个60字符的哈希字符串.

你可以比较使用Hashcheck**方法对比hash加密后和未被hash加密的字串:

if (Hash::check('secret', $hashed_value))
{
    return 'The password is valid!';
}

登录

使用Auth类的attempt方法将使用户登录到你的应用程序变得很简单. 只需把用户的用户名和密码传入方法. 把检验信息包含在一个数组, 这样允许驱动器的最大的灵活性, 因为一些驱动可能需要不同数量的参数的凭据. 如果传入信息是有效的登录方法将返回true. 否则, 将返回:false:

$credentials = array('username' => 'example@gmail.com', 'password' => 'secret');

if (Auth::attempt($credentials))
{
     return Redirect::to('user/profile');
}

如果登录凭证是有效的, 该用户ID将存储在session中, 用户的后续请求将被视为"已登录".

如果要判断用户是否登录, 使用check方法:

if (Auth::check())
{
     return "You're logged in!";
}

使用login方法在没有用户凭证的前提下直接登录, 如下所示, 假设用户第一次注册并使用程序. 只要传入用户对象或用户的ID就好:

Auth::login($user);

Auth::login(15);

被保护的路由

通常的是, 一些页面要对未登录用户进行限制访问. 在Laravel中可以使用认证过滤器来完成. 如果用户已登录, 请求将正常进行, 如果用户没有登录, 他们将被重定向到"login"路由, 这是一个基于名字的路由.

使用auth过滤器保护部分路由:

Route::get('admin', array('before' => 'auth', function() {}));

提示: 你可以自由编辑auth过滤器. 一个默认的实现位于application/routes.php文件中.

检索已登录用户

一旦用户登录到系统, 您可以通过Auth类的user方法来访问登录用户:

return Auth::user()->email;

提示: 如果没有用户登录, user方法会返回null.

退出

很简单?

Auth::logout();

此方法将删除Session中的用户ID, 在后续请求中用户将不再被认为是已经登陆的.