Thinkphp5所有页面验证用户是否登陆
新建Base.php控制器,所有的页面继承自它
<?php
namespace app\index\controller;
use think\Controller;
class Base extends Controller
{
public function __construct(){
/**
* 不验证用户登陆的页面
*/
//不验证用户登陆的页面
$exception_arth_list=[
'member/users/login', //登陆页面
'member/users/reg' //注册页面
];
$redirect_url='member/users/login';
$this->checkUserLogin($redirect_url,$exception_arth_list);
}
/**
* 检查用户是否登陆,登陆时跳转到登陆页面
* $redirect_url 要跳的url (不区别大小写) [str] 例: 'member/Users/login'
* $exception_arth_list [array] 不验证用户登陆的页面地址(不区别大小写) 例: ['member/user/login','member/Users/reg']
* $msg 跳转前的提示信息
*/
protected function checkUserLogin($redirect_url,$exception_arth_list=[],$msg='')
{
if(!is_string($redirect_url) || !is_array($exception_arth_list) || !is_string($msg) ){
die('传入的参数错误.');
}
//获取到当前访问的页面
$module=request()->module();//获取当前访问的模块
$controller=request()->controller();//获取当前访问的控制器
$action= request()->action();//获取当前访问的方法
$current_auth_str=$module.'/'.$controller.'/'.$action; //转成字符串
//不验证用户登陆的页面
//把数组里的全部转小写
if(!empty($exception_arth_list) && is_array($exception_arth_list)){
foreach($exception_arth_list as &$v){
if(!is_string($v)){
die('不验证页面数组里的值只能为字符串类型.');
}
$v=strtolower($v);
}
}
//当前访问的页面$current_auth_str转为全小写后,如果不在$exception_arth_list客户中就验证用户是否登陆
if(!empty($exception_arth_list) && is_array($exception_arth_list)){
if(!in_array(strtolower($current_auth_str),$exception_arth_list)){
if (!session('user_id')) {
if($msg == ''){
$this->redirect($redirect_url);
}else{
$this->error('请先登陆.', $redirect_url);
}
}
}
}
}
}
Thinkphp5所有页面验证用户是否登陆的更多相关文章
- django 验证用户是否登陆
第一步 指定一下登陆url. url(r'^accounts/login/$', include(xadmin.site.urls)), 由于我用的xadmin故而指向了xadmin,如果使用默认的a ...
- 2016-02-20WebForm登陆验证,判断用户是否登陆 PageBase类
http://blog.csdn.net/fanbin168/article/details/49404233 很多时候,WebFrom页面,我们需要判断用户是否已经登陆了.假如有很多页面,难道我们要 ...
- django 使用装饰器验证用户登陆
使用装饰器验证用户登陆,需要使用@method_decorator 首先需引用,method_decorator,并定义一个闭包 from django.utils.decorators import ...
- 通过配置http拦截器,来进行ajax请求验证用户登录的页面跳转
在.NET中验证用户是否登录或者是否过期,若需要登录时则将请求转向至登录页面. 这个流程在进行页面请求时是没问题的,能正确进行页面跳转. 然而在使用xmlhttprequest时,或者jq的getJs ...
- 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能
在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...
- 前端验证用户登陆状态(vue.js)
首先用户需要进行登陆(请求登陆接口),接口请求成功之后后台会返回对应的用户信息(可以把用户信息存放在浏览器缓存中),并且后台会设置浏览器的cookie值(可以在network->header-& ...
- 制作登录页面,点击键盘的 Enter 键或者单击“登录”按钮,验证用户输入的邮箱和密码是否正确
查看本章节 查看作业目录 需求说明: 制作登录页面 点击键盘的 Enter 键或者单击"登录"按钮,验证用户输入的邮箱和密码是否正确 实现思路: 准备登录的静态页面 在页面中嵌入脚 ...
- 【Java EE 学习 70 上】【数据采集系统第二天】【数据加密处理】【登陆验证】【登陆拦截器】【新建调查】【查询调查】
一.数据加密处理 这里使用MD5加密处理,使用java中自带加密工具类MessageDigest. 该类有一个方法digest,该方法输入参数是一个字符串返回值是一个长度为16的字节数组.最关键的是需 ...
- MVC4项目中验证用户登录一个特性就搞定
在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(Attribu ...
随机推荐
- 禁止IOS双击上滑
var agent = navigator.userAgent.toLowerCase(); var iLastTouch = null; if (agent.indexOf("iphone ...
- 【C++ Primer】详解C++和C中的float中的有效数字
在<C++ Primer>第二章中,2.1.1讲到float型的最小尺寸是6位有效数字.这里对“有效数字”的概念产生疑问,故有了以下内容. 首先,float的“尺寸”的意思是 ...
- Consul在linux系统, 群集实战
Consul作为微服务的服务注册与发现组件,是非常重要的一部分 目前想用Consul作为配置管理的统一管理 准备两台机器 11.11.11.1011.11.11.20 下载consul linux版 ...
- Nginx+Tomcat+Session 高性能群集搭建
随着IT行业的发展,linux服务器在企业中应用广泛,人们对linux上的应用服务要求也越来越高,早先的apache服务器.apache有优点也 有不足,apache渐渐不能满足人们的要求,目前ngi ...
- Linux xclock打不开时钟终端
一般执行该操作的都是在安装oracle数据库或其他应用时,需要测试是否可以正常弹层执行的: 网络关于这个的描述和处理大片片的,但是符合自己实际情况的,还是需要直接去确认: 两步处理: 第一步: 使用r ...
- Sql Server中一次更新多列数据
UPATE yourTableName SET column1 = xx, column2 = yy , column3 = zz WHERE yourCondition 举个例子,比如有这样一张表: ...
- Vim中 ctags 跳转直接跳到第一个匹配行的问题
意图 用ctags搜索代码时, 用 ctrl + ] 后,只有一个匹配项直接跳转,有多个则列出所有匹配项选择跳转 问题 在 vim 中使用 ctags 是一个很令人舒服的事情,但有时一些默认的配置和不 ...
- sql 两表查询后 更新某表中部分字段
这是上一个sql更新某表字段的一个延伸,在更新表数据时,实际上会有多表数据查询场景,查询后,只需要更新某一个表中的数据,以下提供两个方法, 第一种使用update 两表查询 update api_ma ...
- bootstrapTable refresh 方法使用简单举例
本文就bootstrapTable refresh 方法如何传递参数做简单举例说明. 下面代码中,一个table,一个button,单击button会触发刷新表格操作. <!DOCTYPE ht ...
- swift语言的特点(相对于oc)
1.泛型.泛型约束与扩展: 2.函数式编程: 3.值类型.引用类型: 4.枚举.关联值.元组等其他 上述为swift最大的特点 Another safety feature is that by de ...