laravel 中会话超时或过期后触发函数

2024-02-18

我有一个关于身份验证的问题。我的身份验证控制器中有以下功能:

public function signout()
    { 
        // set logged in status to zero in database
        $l = Login::where('user_id', Session::get('user')->user_id)
                ->where('logged_in', 1)->first(); 
        $l->logged_in = 0;
        if ($l->save())
        {
            // log user out
            Auth::logout();
            // Forget user session data
            Session::forget('user');
            // redirect user to login page
            return Redirect::to('/account/signin');
        }
    }

现在,在我的会话配置中,我已将会话设置为在 60 分钟后过期,之后用户显然会从系统中注销。但是,如果我没有执行其他功能,例如在数据库中将用户登录状态设置为零或忘记用户会话数组,就会发生这种情况。有没有办法可以在登录会话过期后触发这些函数执行?


我再次环顾四周,看看是否已经有解决方案。通过阅读文档,当我来到“事件”部分时,我感到很兴奋,因为我以为我找到了解决方案,但后来我发现没有这样的东西Session::expirelaravel 中的事件,也没有检查其他用户是否登录的功能。


您的整个前提是错误的:会话应该有一个在用户登录时设置的到期时间戳,并且如果您想要“会话在不活动 1 小时后超时”之类的内容,则应根据每个请求进行更新。

然后你基本上可以:

  1. 通过检查时间戳来检查用户执行请求时会话是否仍然有效
  2. 使用计划任务删除过期的会话,以便您在后台保持干净整洁

无论如何,如果由于某种原因你最终需要在用户注销时触发一些操作,Laravel 实际上有一个在用户注销时触发的事件:'auth.logout'

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

laravel 中会话超时或过期后触发函数 的相关文章

  • Laravel 5.3 如何在通知电子邮件中显示用户名

    我正在尝试在通知电子邮件中添加用户的名字 目前 Laravel 通知电子邮件的开头如下 Hello 我想将其更改为 Hello Donald 现在 我有这样的设置 此示例适用于密码重置通知电子邮件 用户型号 public function
  • Laravel 在公共文件夹中下载 pdf

    我在公共 下载中有一个pdf文件 我只想链接到它并下载它或在浏览器中打开它 我尝试击打http localhost 8000 downloads brochure pdf在浏览器中 但我只是看到一个没有错误的白屏 在 Chrome DevT
  • 每次使用会话来获取/设置对象属性

    我尝试搜索这个 但我什至不知道如何用它来搜索 我试图做的是有一个类 每次我访问它来更改它时 我实际上都是从会话中获取和设置值 这是我正在尝试做的事情 到目前为止我所做的事情 public class example public int p
  • 请确保至少一个领域可以验证这些令牌

    所以我把我的shiro设置为有两个Realms 用户名和密码领域 使用标准 UsernamePasswordToken 我还设置了一个自定义承载身份验证令牌 用于处理从用户传入的令牌 如果我只使用我的passwordValidatorRea
  • 作曲家 | laravel 5 - 更新依赖项但框架本身

    我正在为我的项目使用 Laravel 5 的预测试版 我发现 Laravel 5 的应用程序框架在 github 存储库中发生了更改 并且由于它是开发版本 因此预计会经常更改 我的问题是 我可以使用 Composer 只更新特定的依赖项而不
  • 重置密码 电子邮件

    我是 Laravel 开发新手 目前正在从事小型项目 我想自定义重置密码的电子邮件模板 甚至将其链接到完全不同的模板 对于身份验证脚手架 我使用了php artisan make auth命令 但是 默认重置密码功能使用默认的 Larave
  • Laravel 5 Auth 注销不起作用

    当我使用内置身份验证并尝试在以下位置注销用户时 auth logout 它没有像希望的那样工作 它似乎让用户保持登录状态 但是当我清除浏览器缓存时 我可以看到实际上已经将用户注销了 我在页面上没有收到任何错误 在日志文件中也没有收到任何错误
  • Laravel 5 - 更改默认日志位置,将日志文件移至应用程序之外

    如何更改默认日志文件位置
  • Django 的登录会话

    我正在尝试在我的网络应用程序中设置登录会话 但无法使其正常工作 我是 django 新手 阅读了会话文档 但没有连接到我的网络应用程序 我现在想要的只是检查用户是否已登录 如果没有则重定向到登录页面 这是我尝试合并登录会话的代码 设置 py
  • 使用键模式从 Laravel 4 缓存中删除?

    对于我的包 我们使用 Laravel 缓存 我们创建的每个缓存键都有前缀 所以我们得到mypackage config mypackage md5ofafilename有时我需要刷新我的包创建的所有缓存文件 问题是什么 我只知道缓存键的模式
  • 在 React Native 应用程序中哪里可以获取 EXPO DEBUG 值?

    当我尝试登录 expo 时出现此错误 exp Set EXPO DEBUG true in your env to view the stack trace 你知道我到底要在哪里设置值吗EXPO DEBUG EXPO DEBUG是一个环境变
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • .htaccess 异常导致主目录出现问题

    这是我的目录结构 localhost or livehost app bootstrap public vendor code demo 这是我的 htaccess
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 负载平衡集群中的 PHP 会话 - 如何?

    好的 我得到了这个完全罕见的负载平衡 PHP 网站的独特场景 令人遗憾的是 它过去没有进行负载平衡 现在我们开始遇到问题 目前唯一的问题是 PHP 会话 当然 一开始没有人想到这个问题 因此 PHP 会话配置保留为默认值 因此 两台服务器都
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • 在 Eloquent 中定义自定义属性

    我的数据库中有 3 个不同的字段 city state country 如何在 Eloquent 中定义另一个属性以从这 3 个字段返回一个字符串 第一种方法 但不起作用 protected address public function
  • 使用 Vaadin Flow Web 应用程序处理全局所有布局和“路由”URL 的登录

    Vaadin 8 在 Vaadin 8 中 在我的UI子类我通过检查用户的会话是否带有一个属性来处理登录 该属性表明他们是否已成功登录 如果没有的话 我的UI子类显示登录布局 而不是带有导航选项的其他内容 例如菜单栏和在该 UI 内切换布局
  • 用户可以更改 PHP 中 $_SESSION 的值吗?

    这是我的想法 我想知道是否可能 将信息存储在 PHP 的 SESSION 变量中有多安全 在 SESSION 变量中存储变量有两个潜在的 不安全 风险 另一个答案所描述的第一个称为 会话固定 这里的想法是 由于会话 ID 存储在 cooki
  • 邮件::队列不工作

    我无法在 laravel 5 4 中对电子邮件进行排队 在之前的 Laravel 5 3 项目中 一切都运行良好 发送仍然有效 Mail send email blank title gt nice content gt message f

随机推荐

  • 如何跳过选择屏幕上的必填字段?

    我希望当我单击 Iptal 按钮时它跳过必填字段 但我不想在没有 强制 的情况下控制强制字段 我想在文本框中看到复选标记 例如屏幕截图 通常 当没有必填字段时 Iptal 按钮会调用不同的屏幕 注意 屏幕是标准选择屏幕 我解决这个问题的方法
  • EntityManager bean 的 @Autowired 与 @PersistenceContext

    有什么区别 Autowired private EntityManager em versus PersistenceContext private EntityManager em 这两个选项都适用于我的应用程序 但是我可以使用 Auto
  • 带有通配符领域的 Google 联合登录(混合 OpenID+OAuth)

    我正在尝试实施 Google 的OpenID OAuth https developers google com accounts docs OpenID oauth协议 当 openid realm 包含通配符时它不起作用 openid
  • 带有石英的自定义 UIBarButtonItem

    如何用石英绘制一个与 UIBarButtonItem 风格完全相同的按钮 按钮应该能够显示不同的颜色 我下载了Three20项目 但是这个项目非常复杂 你需要很多时间才能忽略整个框架 我只想绘制一个自定义 UIBarButtonItem 感
  • 为 azure blob 存储终结点配置自定义域名

    我正在关注有关如何为 Blob 存储端点配置自定义域的说明 https learn microsoft com en us azure storage blobs storage custom domain name register a
  • 电子邮件验证 MX 查找

    我被要求在网络应用程序上实现一些电子邮件地址验证 我相信我们都已经经历过一千次了 但是 这一次我被要求在域上进行 MX 查找 看看是否它接受电子邮件 有谁知道这样做有任何潜在的问题吗 mx 查找是确定域是否接受电子邮件的可靠方法吗 是否存在
  • 如何在我的本地仓库 Maven 中下载并安装 jar

    我正在尝试在 tomcat 下下载一个用于内部存储库的 jar 然后将其安装到我的本地 Maven 存储库 jar 文件可以在下面找到path http 10 11 250 14 strepo ext JSErrorCollector 0
  • 如何正确使用CSS媒体查询进行响应式设计

    我有媒体查询方面的问题 我想要我的主线div宽度为 960 像素 但如果屏幕小于 960 像素 我希望它是任何当前宽度的 80 我只从 960px 中得到 80 而不是从更小的所有东西中得到 80 例如 800px 的 80 700px 的
  • Opencv - 灰度模式与灰度颜色转换

    我正在 opencv 2 4 11 python 2 7 中工作 并正在处理灰色图像 在灰度模式下加载图像并将图像从 BGR 转换为灰度时 我发现了异常行为 以下是我的实验代码 import cv2 path some path to co
  • 为什么 android ImageSpan 会显示我的图片两次(当 setBounds 超过特定的魔法宽度时)?

    这是我将 ImageSpan 放入 EditText 中的代码 public void onActivityCreated Bundle savedInstanceState super onActivityCreated savedIns
  • Swift 2 Tapgesture 中无法识别的选择器

    我最近开始将我的应用程序更新到 Swift 2 0 但我遇到了一个问题 该问题在 SO 上有一百个不同的答案 但似乎都与我的问题无关 这在将应用程序更新到 Swift 2 0 之前有效 但我无法找到对点击手势识别器所做的任何更改 这是我收到
  • 无法将“string”隐式转换为“System.TypeCode”

    只是想知道是否有人知道如何修复这个错误 我也用过TypeCode 但仍然没有运气 谢谢 case typeof Nullable
  • c 获取整数的第n个字节

    我知道你可以通过使用获得第一个字节 int x number 1 lt lt 8 1 or int x number 0xFF 但我不知道如何获取整数的第 n 个字节 例如 1234 为 32 位整数 00000000 00000000 0
  • git-stitch-import:如何创建一个主分支?

    我正在尝试将多个 git 存储库合并到一个新存储库中 每个旧存储库作为新存储库中的子目录 git stitch repo 似乎是我想要的工具 但是 文档不太清楚 我能够遵循它 https metacpan org pod distribut
  • this()在Java中意味着什么[重复]

    这个问题在这里已经有答案了 什么是this 在Java中是什么意思 看起来只有放置时才有效 this 在类变量区中 有人对此有想法吗 Thanks 这意味着您正在从另一个构造函数调用默认构造函数 它必须是第一个语句 如果有 则不能使用 su
  • 如何在 Android 中制作 FM 收音机应用程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 这只是出于好奇 有什么办法可以让我们调频广播应用程序适用于 Android 设备 我知道这是可能的 因
  • 对象默认的stringify,相当于Java的toString?

    我刚刚看了 dart 的 3 教程 创建了评级组件 我想知道在字符串化对象时是否调用相同的方法 类似于Java的toString 例如 MyClass myObject new MyClass System out println myOb
  • 如何编写正确的静态方法 - 多线程安全

    因为我认为静态方法不应该像第一个片段那样编写 还是我错了 public static class ExtensionClass private static SomeClass object1 private static StringBu
  • 使用 msiexec 和 c# 安装 msi

    在静默模式下在 C 应用程序中安装 msi 的最佳方法是什么 我想使用 msiexec 安装 msi 文件 但我不知道如何执行此操作 问题是使用 msiexec 和 qn 时 您必须在 cmd exe 进程中运行它 以 以管理员身份 启动
  • laravel 中会话超时或过期后触发函数

    我有一个关于身份验证的问题 我的身份验证控制器中有以下功能 public function signout set logged in status to zero in database l Login where user id Ses