资讯专栏INFORMATION COLUMN

Laravel5.4重新登陆跳转到登陆前页面的原理和实现

lansheng228 / 1526人阅读

摘要:应用场景用户登陆后一段时间需要重新登录,且登陆后返回之前浏览的页面,而不是系统首页。例如当用户在页面,登陆过期后跳转到登陆页面登陆后用户还应在而不是。

1.应用场景:
用户登陆后一段时间需要重新登录,且登陆后返回之前浏览的页面,而不是系统首页。例如:当用户在/article/2 页面,登陆过期后跳转到登陆页面,登陆后用户还应在/user/2而不是home/index。

2.实现原理
通过判断cookie过期时间决定用户是否需要重新登陆,需重新登陆前,存储用户当前的url地址到session中,下次登陆后跳转到此url地址。

3.laravel中的具体实现

路由中间件(判断登陆状态)
这里以cookie是否过期判断用户登陆状态,中间件只判断登陆相关判断和执行,不做多余操作(登录时我使用cookie的值$token作为session的键存储),代码如下:

public function handle($request, Closure $next) {
    //判断cookie是否存在
    if ($token = Cookie::get("token")) {
        //判断session信息,保持状态一致
        if ($request->session()->get($token)) {
            return $next($request);
        }
    }

    //获取当前url,跳转到登陆页
    //这里也可以不用session,直接写到url地址里,需要url_encode()
    return redirect("/admin")->with("reurl", $request->getRequestUri());
    
     

页面端(判断闪存信息)
判断闪存的信息,这里分ajax和submit登陆,submit应该很少了,ajax下获取reurl,然后后端登陆判断reurl。

   @if (session("reurl"))
                
   @endif 

登陆(登陆逻辑)
省略了判断用户账户密码,和存储cookie,session的逻辑,最后前端获取url,location.href = "url",跳转到原url地址。

$reurl = $request->get("reurl");

$url = empty($reurl) ? "/home/index" : $reurl;

return response($url);



注:本文只贴出了实现重新登录的相关代码,实际代码请按照实际业务做对应修改。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23241.html

相关文章

  • vue轻量级后台管理系统基础模板

    摘要:具体实现请查看和的退出登陆回调方法。现在除了必要的页面需要在一开始添加到路由表里,其他的页面都可以根据后台数据来自动生成。另外,如果在未登陆时要访问某一指定页面,会重定向到登陆页,登陆成功后会自动跳到这个指定页面。 项目地址 vue-admin-template 在线预览 更新 2019.6.25 更新 修复路由表冲突问题 退出当前用户,换账号重新登陆时,上个账号和现在的账号路由表会有...

    2shou 评论0 收藏0
  • Struts2【拦截器】就是这么简单

    摘要:文件上传通过这个拦截器拦截器的设计就是基于组件设计的应用再次回顾拦截器基础在开始讲解的时候已经说明过了这个文件,它定义了的所有拦截器。由于我们配置了自定义拦截器,那么默认的拦截器栈是不会执行的。 什么是拦截器 拦截器Interceptor.....拦截器是Struts的概念,它与过滤器是类似的...可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了...

    chanjarster 评论0 收藏0
  • 尚学堂 react -后台管理系统开发流程

    摘要:项目开发准备描述项目技术选型接口接口文档测试接口启动项目开发使用脚手架创建项目开发环境运行生产环境打包运行管理项目创建远程仓库创建本地仓库配置将本地仓库推送到远程仓库在本地创建分支并推送到远程如果本地有修改新的同事克隆仓库如果远程修 day01 1. 项目开发准备 1). 描述项目 2). 技术选型 3). API接口/接口文档/测试接口 2. 启动项目开发 1). 使用react...

    lemon 评论0 收藏0
  • FineReport中如何对cpt模板加密

    摘要:描述客户使用报表并将其集成到自己的产品中,然后提供给最终用户使用,最终用户可以预览模板,但是不能打开模板进行设计修改。点击确定即可,然后就会对该工程下的所有模板进行加密。注加密只能对工程下所有模板加密,不能单独加密。 1.描述FR客户使用FineReport报表并将其集成到自己的产品中,然后提供给最终用户使用,最终用户可以预览FR模板,但是不能打开模板进行设计修改。FineReport...

    waruqi 评论0 收藏0
  • 区块链招聘信息爬取与分析

    摘要:最近在研究区块链,闲来无事抓取了拉勾网上条区块链相关的招聘信息。拉勾网的反爬虫做的还是比较好的,毕竟自己也知道这种做招聘信息聚合的网站很容易被爬,而且比起妹子图这种网站,开发的技术水平应该高不少。 最近在研究区块链,闲来无事抓取了拉勾网上450条区块链相关的招聘信息。过程及结果如下。 拉勾网爬取 首先是从拉勾网爬取数据,用的requests库。拉勾网的反爬虫做的还是比较好的,毕竟自己也...

    kelvinlee 评论0 收藏0

发表评论

0条评论

lansheng228

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<