Symfony3实现刷新登录时间
在Symfony3中实现刷新登录时间、登录加1的功能需要自己写一个success handle。
简单讲一下创建success handle的流程,使用的环境如下
PHP版本:7.1.8
Symfony版本:3.3.5
默认管理员权限相关的Bundle名为AuthorizationBundle
首先我们在AuthorizationBundle下创建一个Service文件夹,用来储存所有与service相关的文件。建立一个AuthorizationHandle.php的文件,这个是我们用来实现success handle的代码文件。
因为实现success handle需要实现AuthenticationSuccessHandlerInterface接口中的方法,所以我们的handle类这么写
<?phpnamespace HuanYue\AuthorizationBundle\Service;use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;class AuthorizationHandle implements AuthenticationSuccessHandlerInterface
{use ContainerAwareTrait;/*** This is called when an interactive authentication attempt succeeds. This* is called by authentication listeners inheriting from* AbstractAuthenticationListener.** @param Request $request* @param TokenInterface $token** @return Response never null*/function onAuthenticationSuccess(Request $request, TokenInterface $token){$user = $token->getUser();$user->setLastLogin(new \DateTime());$user->save();return new RedirectResponse($this->container->get('router')->generate('huan_yue_admin_authorization_dashboard'));}
}
下面解释一下代码,AuthenticationSuccessHandlerInterface中的注释很清晰的写明了我们可以在onAuthenticationSuccess中实现我们的功能,并且最后需要返回一个Response。我们进行刷新登录时间、或者登录加1、或者其他什么操作后需要跳转到后台首页,因此需要生成一个RedirectResponse,我的代码里用到了Symfony container去获取router,所以需要使用Symfony提供给我们的Trait(注:在2.*版本中可以直接继承ContainerAware类)。到此,我们的success handel已经实现完成。
下一步,我们把我们的AuthorizationHandle注册到Symfony的Service中,在Resources\services.yml中添加
services:
huan_yue_authorization.authorization_handle:class: HuanYue\AuthorizationBundle\Service\AuthorizationHandlecalls:- [ setContainer, [ "@service_container" ] ]
最后一步,修改app\config\security.yml文件,在form_login下添加我们的success handle,代码如下
form_login:check_path: huan_yue_admin_authorization_loginlogin_path: huan_yue_admin_authorization_logindefault_target_path: huan_yue_admin_authorization_dashboardsuccess_handler: huan_yue_authorization.authorization_handle
到此,整个流程完成。
Symfony3实现刷新登录时间相关推荐
- Getway jwt 单点登录以及刷新token时间
Getway jwt 单点登录以及刷新token时间 不用nosql或其他 1.集成jwt pom依赖: <dependency><groupId>io.jsonwebtoke ...
- token 过期刷新令牌_Passport 验证 Token 方法和持续刷新过期时间问题
项目介绍 最近在做一个后台项目,目标是登录后无操作30分钟后自动过期,一直操作的情况下,过期时间一直刷新(目前不考虑每次操作修改对数据库的压力) token有效期检测 操作后自动刷新过期时间 管理员手 ...
- 查看用户登录时间以及命令历史
查看用户登录时间以及命令历史 文章目录: 你有没有遇到这种情况,就是有一台服务器,上面有多个人登陆使用,但是突然右某一天,服务器突然出现了问题,然后你没有操作,但是此时你却成为了怀疑的对象,搞出问题的 ...
- YII2 实现登录时候修改最新登录时间
YII2 实现登录时候修改最新登录时间 YII2保存最新登录时间主要技巧:为 EVENT_AFTER_LOGIN 事件绑定一个方法,在方法中保存最新时间 public function login() ...
- 获取网络时间并刷新本地时间(源码2)
因为上次那个获取网络时间失效了(使用的是37端口),获取网络时间并刷新本地时间(源码1) 所以网上又找了一份代码,使用的是123端口,虽然没有测试成功,这里也做下记录,估计是本机环境问题,过两天再进行 ...
- Powershell 比较AD和Exchange的用户登录时间
今天早上朋友问我如何获取指定某个时间段的AD用户登录时间和相关的邮箱登录时间. 豆子公司的Exchange已经转移到Office365上,首先远程的导入AD模块,本地导入MSOnline的模块,这样我 ...
- 局域共享解决——用户账户限制,可能的原因包括不允许空密码,登录时间限制...
http://blog.163.com/lenovo_gxr/blog/static/5527719720145583144126/ 在客户端访问共享遇到的错误之八: 错误提示框为如图:用户账户限制, ...
- java记录登陆时间_Spring security如何实现记录用户登录时间功能
一.原理分析 spring security提供了一个接口 AuthenticationSuccessHandler,该接口中只有一个方法,用来进行登录成功后的操作 public interface ...
- php实现最后登录时间,php实例之基于Cookie的登录表单和获取最后登录时间
1,html部分 基于cookie的登录表单,密码提交页-www.jbxue.com action="CookieBasedPasswordLogin.php"> 请输入您的 ...
最新文章
- Windows下安装PHP开发环境
- 我能想到最浪漫的七夕,就是让AI唱一首“我爱你”!
- 我的公众号 - Old Artist
- 完美解决Ubuntu16.04虚拟机窗口自适应问题
- Spring Session官方介绍及spring框架学习方法
- php-fpm和php,phpcgi和phpfpm的区别是什么
- C# 中的只读结构体(readonly struct)
- VS2008 只生成DLL不生成lib文件
- 短小精悍-机器学习核心概念、模型、基础知识点简明手册-免费分享
- ruby中调用dll的诡异错误
- 北大飞跃手册_飞跃手册 | 保研篇——北京大学
- 【渝粤题库】陕西师范大学202291商业银行经营学作业(高起专)
- 微信扫码登录自定义二维码显示信息
- 点阵墨水屏的使用以及图像预处理
- llqrcode.js识别二维码,解析二维码信息
- 微信小程序接入腾讯云的对象存储
- 正版七日杀服务器存档,如何在网吧保存steam七日杀存档 | 手游网游页游攻略大全...
- 【微信公众号h5】授权
- 通用流量录制回放工具 jvm-sandbox-repeater 尝鲜 (二)——repeater-console 使用
- HTML_hao123 1
热门文章
- 如何为windows服务添加安装程序(转)
- redis的rpm包下载安装
- ASP.NET Web API 基本操作(CRUD)
- PO、BO、VO、DTO、POJO、DAO的区别
- js学习-DOM之动态创建元素的三种方式、插入元素、onkeydown与onkeyup两个事件整理...
- Struts2.3+Spring4.0
- a Line Segment Detector
- 《中国人工智能学会通讯》——10.10 结束语
- WebGIS中地图恢复初始位置及状态
- [转] Java多线程发展简史