用户登录

有些地址,我们希望只有注册用户,并且登录以后才能访问,或者拥有特定权限的用户才能访问。

对于想要使用身份验证来保护的这些地址,可以对它们使用 auth 过滤器。

比如,现在我们要打开 movies/create 这个地址 ... 现在,不需要登录也能打开 ... 下面,我们对这个地址应用一个 auth 过滤器 ... 这样,用户在尝试打开它的时候,需要先登录才行。

处理这个请求的是在《Laravel 基础教程》这个课程里面创建的 MovieController 这个控制器。

这里的 create ,就是处理访问 movies/create 请求的方法 ...

对这个请求添加 auth 过滤器,可以直接在 routes.php 里面,设置一条具体的路由,然后去应用这个过滤器 ... 另外,我们也可以直接在控制器里面去添加过滤器 .. 先看一下第一种方法 ...

打开 routes.php ...

添加一条路由 ... 使用 Route 类的 get 方法 ... 添加一个 get 请求的路由 ... 请求的地址是 movies/create ... 然后可以把一个数组作为这个方法的第二个参数 ...

这个数组里面,第一个项目就是要使用的过滤器的类型,还有具体的过滤器的名字 .. . 过滤器有 before 还有 after 类型 ... before 类型的过滤器会在请求访问之前使用 ... after 类型的过滤器会在请求访问之后使用 ...

因为我们想在请求之前就要求用户登录 ... 所以,这里用一个 before 类型的过滤器 ... 它的值 ... 就是要使用的过滤器的名字 ... 这里我们要用的是 auth 这个过滤器 ..

然后再设置一下数组里面的第二个项目 ... 就是使用哪个控制器里面的哪个方法去处理 movies/create 这个请求 ... 先用一个 uses ... 它的值是控制器还有控制器的方法的名字 ...

Route::get('movies/create', array(
'before' => 'auth',
'uses' => 'MovieController@create'
));

这样,当有人请求访问 movies/create 的时候,会对这个请求应用 auth 过滤器,也就是要求没有登录的用户先登录一下 ... 这个请求由 MovieController 这个控制器的 create 方法去处理...

filter

在演示之前,我们先去看一下过滤器 ... 应用里的过滤器,都会在 app 目录下面的 ... filters.php 这个文件里面 ...

在这里,可以看到 auth 这个过滤器 .. 它的作用就是,使用 Auth 类的 guest 方法,判断一下用户有没有登录 ... 如果没登录就把用户重定向到登录页面 ...

在用户登录成功以后,我们可以把用户带回到它之前想要访问的页面 ... 不过需要再去设置一下处理登录请求的方法 ...

intended

打开 AccountController 这个控制器 .. 我们设计的处理登录请求的方法在这个控制器里面 ... 就是这个 postLogin 方法 ...

在这里,登录成功以后,使用 Redirect to,把用户重定向到应用的首页 ... 这里,我们把 to 这个方法换成 intended ... 这样会把用户重定向到它之前想要访问的页面 ... 在这个方法里,也可以设置一下默认的重定向到的地址 ...

演示

保存 ... 再到浏览器上试一下 ...

打开 movies/create 这个页面 ... 因为我还没有登录 .. 所以,会把我重定向到登录的页面上 ...

输入邮件地址 ... 密码 ... 然后点击登录 ...

成功以后,会把我带回到我要访问的创建电影的这个页面 ...

身份验证过滤器 - auth《 Laravel 身份验证 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点