Laravel 5.4重新登录实现跳转到登录前页面的原理和方法

前言

本文主要给大家介绍的是关于Laravel5.4重新登录跳转到登录前页面的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍:

一、应用场景:

用户登陆后存在过期时间,超时用户需重新登录。例:当用户在/user/2 页面,登陆过期后跳转到登陆页面,登陆后用户还应在/user/2而不是home/index。

二、实现原理

在判断用户过期后,存储用户当前的url地址到session中,下次登陆后跳转到此url地址。

三、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,跳转到登陆页
 $returnUrl = urlencode($request->getRequestUri());

 return redirect('/login?reurl=' . $returnUrl); }

登陆端(处理与页面交互以及跳转逻辑)这里做的是跳转到登陆页,这个可以在中间件实现,只有这一句,with实现的是将reurl闪存,提供前端使用。

return redirect('/')->with('reurl', $returnUrl); 

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

 @if (session('reurl'))
  <input type="hidden" name="reurl" value="{{ session('reurl') }}"/>
 @endif 

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

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

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

return response($url);

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

时间: 2017-07-11

详解用vue.js和laravel实现微信授权登陆

在laravel框架我们使用安正超的package 网址:https://easywechat.org/ 有专门的针对laravel的安装包,请参见如下网址:https://github.com/overtrue/laravel-wechat 下面来说说具体的安装: 1.安装package composer require overtrue/wechat 2.在app/config/app.php 中注册 ServiceProvider Overtrue\LaravelWechat\Servic

Laravel中使用FormRequest进行表单验证方法及问题汇总

在`Laravel`中,每一个请求都会被封装为一个`Request`对象,`Form Request`对象就是包含了额外验证逻辑(以及访问权限控制)的自定义`Request`类. 本文分析了FormRequest异常的处理流程并提出了自定义处理FormRequest验证失败的思路. 所有示例基于Laravel 5.1.39 (LTS) 今天天气不错,我们来说说表单验证. Controller中做表单验证 有的同学把表单验证逻辑写在Controller中,例如这个对用户提交评论内容的验证: <?p

Laravel框架表单验证详解

基础验证例子 复制代码 代码如下: $validator = Validator::make( array('name' => 'Dayle'), array('name' => 'required|min:5') ); 传递给 make 函数的第一个参数是待验证的数据,第二个参数是对该数据需要应用的验证规则. 多个验证规则可以通过 "|" 字符进行隔开,或者作为数组的一个单独的元素. 通过数组指定验证规则 复制代码 代码如下: $validator = Validator

基于Laravel5.4实现多字段登录功能方法示例

前言 最近在一个项目中需要实现一个多字段登录功能,简单来说就是可以使用用户名.邮箱或手机号任意一种方式进行登录.所以本文就来给大家介绍了关于Laravel5.4多字段登录的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍吧. 以下内容基于laravel5.4 方法如下: 首先,通过artisan工具生成auth模块 php artisan make:auth 这时候App\Http\Controllers目录下会新增一个Auth目录,该目录下为注册登录相关的控制器,resour

Laravel 5框架学习之表单验证

在建立一个文章的时候,如果你什么都不输入直接提交,ok,你获得了一个空的文章,没有任何错误提示,这是不对的.在命令行下运行 php artisan 可以看到一个选项 make:request,新建一个form request类.在命令行执行 复制代码 代码如下: php artisan make:request CreateArticleRequest 生成的文件在 app/http/requests 目录下.在文件中我们可以看到两个方法: public function authorize()

在Laravel框架里实现发送邮件实例(邮箱验证)

在经过一段时间的使用后,发现在项目中很多地方需要用到用户验证,以短信验证和邮箱验证为主流趋势,此篇文章小编给大家总结了如何在Laravel框架中实现发送邮件功能,以后会陆续更上如何实现短信验证..... 在.env文件下 1.配置Laravel文件 MAIL_DRIVER=smtp //建议使用smtp方式 MAIL_HOST=smtp.163.com //建议使用163邮箱 QQ邮箱会有报错 MAIL_PORT=25//smtp 默认为25 MAIL_USERNAME=null //自己的16

laravel5.2实现区分前后台用户登录的方法

1.前台登录 直接使用laravel自带的auth php artisan make:auth 然后可以查看路由文件: Route::group(['middleware' => 'web'], function () { Route::auth(); Route::get('/home', 'HomeController@index'); }); 执行php artisan migrate 会发现生成了两张表. 2.后台登录 编辑配置文件 config\auth.php 添加guards中的a

Laravel框架实现发送短信验证功能代码

Laravel框架简介: Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁.富于表达力. Laravel短信验证思路详解 今天在做到用户注册和个人中心的安全管理时,我实现借助第三方短信平台在Laravel框架中进行手机验证的设置; 由于我做的是一个为客户提供医疗咨询和保健品网站,所以我们对客户个人隐私的保护显得尤为重要,因而在客户登录后进入个人中心前,

Laravel框架用户登陆身份验证实现方法详解

本文实例讲述了Laravel框架用户登陆身份验证实现方法.分享给大家供大家参考,具体如下: laravel中检测用户是否登录,有以下的代码: if ( !Auth::guest() ) { return Redirect::to('/dashboard'); } 那Auth::guest是如何调用的呢? laravel用了Facade模式,相关门面类在laravel/framework/src/Illuminate/Support/Facades文件夹定义的,看下Auth类的定义: class

Laravel实现用户注册和登录

Laravel身为最优雅的PHP框架,很多学习PHP的小伙伴造就对Laravel垂涎欲滴.今天就来实现你的愿望,让我们一起从零开始,利用Laravel实现Web应用最常见的注册和登录功能!所有的课程源码已放在Github上:laravel-start. Race Start ! 首先我们来明确一下我们这个课程需要的东西: Laravel 4.2 Bootstrap 3.3 Laravel就是我们关心的核心部分,Bootstrap用来快速设置一些前端的CSS样式. 1.安装Laravel 简单说明

Laravel重写用户登录简单示例

本文实例讲述了Laravel重写用户登录的方法.分享给大家供大家参考,具体如下: class AuthController extends Controller { // use ThrottlesLogins, AuthenticatesAndRegistersUsers; protected $redirectTo = 'admin/index'; protected $loginView = 'admin/login'; protected $guard = 'admin'; protec

laravel 5.3 单用户登录简单实现方法

需求描述 当前用户只能在一个地方登录,即同一账号不能再2个以上窗口登录,后登录者踢出前登录者. 设计思路 在用户数据表中新增1个字段,记录当前登录用的session_id,当用户登录的时候把session_id存储到数据库中,然后在中间件认证里加判断,判断当前用户sesson_id是否和数据库中的session_id相等,如果相等继续向下执行,反之注销登录. 具体实现 1.首先在用户表中新增字段last_session,类型CHAR 40长度 2.在AuthController 控制器中实现父类

laravel 实现用户登录注销并限制功能

1. 创建登录控制器 在项目根目录输入: php artisan make:controller Admin/LoginController 2.创建用户模块 以及数据库 php artisan make:model Model/Admin -m 运行之后 项目中会新增两个PHP文件 新创建了admins用户表,此用户表默认新建中只有主键,创建时间,编辑时间.我们接下来新加两个字段 用户名(username) 和密码(password). 在up函数中加上这两个字段,后面可以按自己的需求添加属性

Laravel 微信小程序后端实现用户登录的示例代码

接上篇微信小程序后端搭建:分享:Laravel 微信小程序后端搭建 后端搭建好后第一件事就是用户登录认证,简单实现微信小程序登录认证 1.user 模型 use Laravel\Passport\HasApiTokens; 新增 use HasApiTokens, Notifiable; protected $fillable = [ 'id', 'name', 'email', 'email_verified_at', 'username', 'phone', 'avatar',//我用来把微

Flask框架通过Flask_login实现用户登录功能示例

本文实例讲述了Flask框架通过Flask_login实现用户登录功能.分享给大家供大家参考,具体如下: 通过Flask_Login实现用户验证登录,并通过login_required装饰器来判断用户登录状态来判断是否允许访问视图函数. 运行环境: python3.5 Flask 0.12.2 Flask_Login 0.4.1 Flask-WTF 0.14.2 PyMySQL 0.8.0 WTForms 2.1 DBUtils 1.2 目录结构: 直接看代码,具体功能有注释 Model/Use

Django自定义用户登录认证示例代码

前言 有时候 Django 自带的用户登录认证不能满足我们的需求,比如我不想要用户名+密码登录,我想手机号+验证码登录,这样就需要我们去修改 Django 自带的认证了. Django 默认使用用户认证的是ModelBackend,这个类也就是我们要下手的地方,ModelBackend里面有一个authenticate的方法,这个方法就是登录时对用户认证的方法.我们要改的就是这个方法. 先看看原码理解一下认证逻辑: 第15-16行先获取认证用的用户名字段,默认是username,如果在Userm

Python实现的用户登录系统功能示例

本文实例讲述了Python实现的用户登录系统功能.分享给大家供大家参考,具体如下: 有N,E,Q三个选择,若选择Q或者中断,则系统退出.若其他选项,则持续让用户选择. #!/usr/bin/env python db = {} def newuser(): prompt = 'login desired: ' while 1: name = raw_input(prompt) if db.has_key(name): prompt = 'name taken, try another: ' co

Spring Security 单点登录简单示例详解

Overview 最近在弄单点登录,踩了不少坑,所以记录一下,做了个简单的例子. 目标:认证服务器认证后获取 token,客户端访问资源时带上 token 进行安全验证. 可以直接看源码. 关键依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.2

Laravel框架路由管理简单示例

本文实例讲述了Laravel框架路由管理.分享给大家供大家参考,具体如下: 路由中输出视图 Route::get('/', function () { return view('welcome'); }); get路由请求 Route::get('get',function(){ return 'get路由请求'; }); post路由请求 Route::post('post',function(){ return 'post请求'; }); 多路由请求 Route::match(['get',

Laravel框架查询构造器简单示例

本文实例讲述了Laravel框架查询构造器.分享给大家供大家参考,具体如下: public function query(){ //新增数据 //$bool = DB::table('wd_user')->insert(['username'=>'jack']); //dd($bool); //新增数据并且获取到自增id //$id = DB::table('wd_user')->insertGetid(['username'=>'Tom']); //dd($id); //新增多条