当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel 5框架学习之用户认证

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-22 13:47:16 浏览: 评论:0 

本文给大家分享的是Laravel5框架中用户认证系统的使用方法,十分的详细,附上示例,推荐给小伙伴们,有需要的朋友可以参考下。

Laravel 出厂已经带有了用户认证系统,我们来看一下 routes.php,如果删除了,添加上:

  1. Route::controllers([ 
  2.   'auth' => 'Auth\AuthController'
  3.   'password' => 'Auth\PasswordController' 
  4. ]); 

可以使用 php artisan route:list 查看一下。浏览器中访问 /auth/login,可以看到登陆界面,最好把系统默认的 app.blade.php 中关于 google 的东西注释起来,要不然你会疯掉的。

你可以使用 register、login甚至 forget password。

实际注册一个用户,提交后失败了,实际上没有失败,只是larave自动跳转到了 /home,我们已经删除了这个控制器。你可以使用 tinker 看一下,用户已经建立了。

在 Auth\AuthController 中实际上使用了 trait,什么是 triat?well,php只支持单继承,在php5.4中添加了trait,一个trait实际上是一组方法的封装,你可以把它包含在另一个类中。像是抽象类,你不能直接实例化他。

在 Auth\AuthController 中有对 trait 的引用:

use AuthenticatesAndRegistersUsers;

让我们找到他,看一下注册后是怎么跳转的。他隐藏的挺深的,在 vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesAndregistersUsers.php,wow。

  1. public function redirectPath() 
  2. if (property_exists($this'redirectPath')) 
  3.  return $this->redirectPath; 
  4.      
  5.    //如果用户设置了 redirectTo 属性,则跳转到用户设置的属性,否则到home 
  6. return property_exists($this'redirectTo') ? $this->redirectTo : '/home'

OK,我们知道了,只要设定 redirectTo 这个属性就可以自定义注册后的跳转了,我们在 Auth\AuthContotroller 中修改:

protected $redirectTo = 'articles';

我们先使用 /auth/logout 确保我们退出,如果出错了不要害怕,我们没有默认的主页,重新访问:auth/register 新建一个用户,这次应该ok了。

再次logout,然后使用 login 登陆一下。

现在我们可以删除 form_partial 中临时设置的隐藏字段了,然后修改控制器:

  1. public function store(Requests\ArticleRequest $request) { 
  2.   //你可以这样 
  3.   //$request = $request->all(); 
  4.   //$request['user_id'] = Auth::id(); 
  5.  
  6.   //更简单的方法 
  7.   $article = Article::create($request->all()); 
  8.   //laravel 自动完成外键关联 
  9.   Auth::user()->articles()->save($article); 
  10.  
  11.   return redirect('articles'); 

添加一个文章,然后使用 tinker 查看一下。

中间件

我们当然不希望任何人都能发布文章,至少是登陆用才可以。我们在控制器中添加保护:

  1. public function create() { 
  2.   if (Auth::guest()) { 
  3.     return redirect('articles'); 
  4.   } 
  5.   return view('articles.create'); 

上面的代码可以工作,有一个问题,我们需要在每一个需要保护的方法中都进行上面的处理,这样做太傻了,幸好我们有中间件。

中间件可以理解为一个处理管道,中间件在管道中的某一时刻进行处理,这个时刻可以是请求也可以是响应。依据中间件的处理规则,可能将请求重定向,也可能通过请求。

Tags: Laravel框架学习 Laravel用户认证

分享到: