Session
ThinkPHP采用think\Session类提供Session功能支持。
在ThinkPHP5.0中使用\think\Session类进行Session相关操作,Session会在第一次调用Session类的时候按照配置的参数自动初始化。
Session在项目中的设置
session的设置一般在登陆成功的时候,将用户信息通过Session::set(‘name’,’TOM’)的方法进行设置:
if 登陆信息正确
{
//登陆成功之后,把一些信息放入session中
Session::set('name',$userinfo->NAME,'think');
Session::set('ROLE',$userinfo->ROLE,'think');//用户权限
Session::set('start_time',time(),'think');//记录登录时间
}
Session的销毁
- 自动销毁
session有默认的自动销毁时间,可以设置自动销毁时间,参考文章:thinkphp如何有效的设置session过期时间
- 手动注销
一般时用户主动通过退出登陆操作时调用
//登出
public function loginOut(){
Session::clear('think');//清空session
return $this->success('注销成功','Index/login');
}
Sesion的权限判断
设置session的最大的目的就是进行权限的判断,判断用户是否有进入某个页面的权限,例如:如果没有登陆就什么页面都不能访问。
方法为在父类控制器base.php的构造函数中添加对当前session进行判断,所以的控制器都要继承这个父类
在父类控制器中调用Session::has(‘name’),判断session中是否有值。
protected function is_login()
{
if(Session::has('JZGH','think') && Session::has('ROLE','think'))
{
return true;
}else
{
return false;
}
}
Session的调用
在后台控制器.php中调用;
直接用变量接收Session::get就行了$name=Session::get('name','think');
在前台.html中调用。
系统变量的输出通常以{$Think 打头
{$Request.session.name}
或者
{$Think.session.name}