在创建 users 数据表的时候,我们添加了一个 is_admin 的字段 ... 用来标记用户是不是管理员 ... 这个视频我们可以利用这个字段去做点事情 ... 当用户要访问创建电影页面的时候,不但要求用户先登录 ... 登录以后,还要查看一下用户是不是管理员,也就是用户记录的 is_admin 这个字段里面的值是不是 1 ,如果是的话,就显示创建电影的页面,如果不是的话,可以把用户重定向到一个地方,带一条提醒信息,说明一下原因。
先打开 MovieController 这个控制器 ... 打开 create 方法 ...
在这里,先用一个 if 语句,判断一下当前登录的用户是不是管理员 ... 访问当前登录用户的信息,用的是 Auth 类的 user 方法 ... 后面加上属性的名字 ... is_admin ... 如果是,就把请求指向一个视图,也就是显示出创建电影的表单 ...
如果不是的话 ... 可以把用户重定向到一个指定的地方 ... 再加上一条提醒的信息 ...
public function create()
{
if(Auth::user()->is_admin){
return View::make('movie.form');
}
return Redirect::to('signup')->with('message', '哎呀,没有权限访问 : (');
}
回到浏览器 ... 打开创建电影的页面 ...
现在我用的是 wanghao 这个用户登录的 ... 他是管理员 ... 所以会显示这个创建电影页面 .. 下面,我们先退出一下 ..
然后再打开 movies/create ... 提示登录 ... 这次我用 xiaoxue 这个用户登录一下 .. 她不是管理员 ... xiaoxue@ninghao.net ... 密码 ... 111111
登录成功以后,会尝试把 xiaoxue 重定向到她之前访问的 movies/create 页面 .. 但是因为 xiaoxue 不是管理员 ... 所以,又会反她重定向到这个 signup 页面 ...
页面上,会显示提示用户没有权限访问创建电影的页面 ...
这个视频我们演示了一个简单的权限的应用 ... 对于更复杂的应用,我们可以使用第三方提供的包来扩展 Laravel 的功能,比如可以使用 Sentry 。