laravel后台账户登录验证(5.5.48版本)
首先我是菜鸟,对laravel框架也不是很熟悉,突然有一天心血来潮就想研究一下laravel的后台登录用户登录的流程,
虽然公司项目中有这样的一套流程,也看了好几遍,越看越简单,越看我就越会了,当自己写的时候, 你懂的 一看啥都会 一写你会啥?不扯了 切入正题吧。
第一步:配置config文件
a:配置config/auth.php文件
'guards' => [
//后台
'admin' => [
'driver' => 'session',
'provider' => 'admins',
], ],
'providers' => [
'admins' => [
'driver' => 'eloquent',
'model' => \HiCommon\Model\AuthAdmins::class, //登录用户表的模型
],
],
b:配置的\HiCommon\Model\AuthAdmins.php文件内容 (模型必须要继承Authenticatable)
<?php
namespace HiCommon\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
class AuthAdmins extends Authenticatable
{
protected $table = 'admins';
protected $primaryKey = 'id';
protected $guarded = [];
}
c:还有.env文件里面关于session的设置,我这里是使用默认的文件方式, 你也可以使用redis等记录。
第二步:登录账户的验证
a:根据自己的业务逻辑验证,这里提一点密码验证
//这里会自动将明文密码、和之前的密文密码比较 相同返回true, 否则返回false $check = Hash::check( 用户当前输入的密码(明文), 账户之前设置的密码(密文) );
b:根据业务需求昨晚基本验证后,重点的来了 使用 Illuminate\Support\Facades\Auth 来干点啥
use Illuminate\Support\Facades\Auth
//attempt会根据传的参数去用户表中去查找数据,查到数据后会将数据保存到session中的 $arr_data = [
'username' => trim((string)$data['username']),
'password' => trim((string)$data['pass'])
];
//这里的admin就是auth.php文件 guards 参数中配置的admin
Auth::guard('admin')->attempt($arr_data)
第三步:大致就是这个流程了 , 最后可以通过
Auth::guard('admin')->user() //获取当前登录用户的详细信息
Auth::guard('admin')->id() //获取当前登录用户的主键id
。。。。。。。。。。。。完了? 没有 接着来
以上步骤我都完成的非常出色,这个你们是看不到的,同事也看不到,他们只会看到最总结果: 账户登录成功 成功之后后干嘛呢? 当然你通过跳转到后台的主页面了,
跳了吗?跳了,跳成功了吗?成功了。有问题? 好像有一点问题? 啥? 不是跟出色吗? 呃。。。。
啥问题? 账户登录成功跳转页面后,在新页面使用 Auth::guard('admin')->user()获取当前登录用户信息返回的是null 第一反应 咦?刚才打印还有呀,这里就没有了?代码写错了?检查之后代码没有问题,登录页面确实能打印
跳转页面之后也确实返回null, 既然代码没问题 那就找问题呗。 先从配置文件开始,再到验证的业务流程都没有问题,还是没有找到关键的问题所在,(这时已经是下班点了,也就没有继续的查找,心想这估计睡一觉就会自动好,之前好想有这样的事情)。
打死你都不相信,这个问题出在路由这里 你信吗? 反正刚开始我是不会信的。
'middleware' => ['web','admin']
后台所有的路由都要用wen这和中间件?为啥 这个web中间件定义在app/Http/Kernel.php里面,代码我就不贴了,自己点进去看一下就明白了,简单说明一下吧,这个web中间件加载了一些基本的东西、例如cookie、seesion开启,token验证等,这里看一下就会懂为啥非要使用web中间件了。
如果引用了web中间件报错,我调用的时候就有点问题,啥问题呢 心不细的问题,估计有很多同学会遇到, 我是用ajax提交的账户信息,居然只提交了账户和密码这两个字段过来, 所有在调用web中间件是VerifyCsrfToken这个就会报错,对头没有传 _token这个字段,所以报错, 然后在表单中添加一个隐藏域 提交 登录 跳转 打印用户信息 ok 。。。。。 莫得问题了 旋转跳跃 我闭着眼
文章写的有点乱,也不太会表达,如果有相同问题的同学看不懂自己找我也行 , 如果有帮助 请666一下
laravel后台账户登录验证(5.5.48版本)的更多相关文章
- DJango简单的后台定义登录验证
第一步创建一个新的项目 APPLICATIONNAME : 表示创建子项目 第二步:找到主项目的url 进行 include 分发式url 简单的说,就是将app里边的url放在这里. 这里也可以找到 ...
- 洗礼灵魂,修炼python(67)--爬虫篇—cookielib之爬取需要账户登录验证的网站
学完前面的教程,相信你已经能爬取大部分的网站信息了,但是当你爬的网站多了,你应该会发现一个新问题,有的网站需要登录账户才能看到更多的信息对吧?那么这种网站怎么爬取呢?这些登录数据就是今天要说的——co ...
- jsp实现账户登录、注册!
jsp连接mysql数据库进行账户登录验证和账户注册 ~jsp: Login.jsp .LoginCl.jsp.Welcome.jsp.Register.jsp.login.css login.css ...
- Laravel登录验证碰到的坑 哈希验证匹配问题
用laravel 写登录验证 本来是用Crypt加密 添加用户到数据库的 后来验证密码 解密时一直报错 The payload is invaild 由于本人是laravel框架小白 自己思考许久未 ...
- 如何使用新浪微博账户进行应用登录验证(基于Windows Azure Mobile Service 集成登录验证)
使用三方账号登录应用应该对大家来说已经不是什么新鲜事儿了,但是今天为什么还要在这里跟大家聊这个话题呢,原因很简单 Windows Azure Mobiles Service Authenticatio ...
- Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(函登录验证)
上一篇 Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页 了解了LigerUI 中Grid的基本用法 现在结合上一篇的内容做一个简单的后台管理,当然也有前台的页面 ...
- app与php后台接口登录认证、验证(seesion和token)
简要:随着电商的不断发展,APP也层次不穷,随着科技的发展主要登录形式(微信.QQ.账号/密码):为此向大家分享一下"app与php后台接口登录认证.验证"想法和做法:希望能够帮助 ...
- Yii 1.1.17 二、Gii创建后台与后台登录验证
一.用Gii创建后台模块 1.启用gii,在config/main.php 'gii' => array( 'class' => 'system.gii.GiiModule', 'pass ...
- Laravel开发:多用户登录验证(1)
之前实现了一次,后来代码忘记放哪了,所以有跳了一次坑. 先贴上Laravel自带的验证代码: 路由:routes/web.php // Authentication Routes... $this-& ...
随机推荐
- flex 垃圾回收
原文在这里:Garbage Collection with Flex and Adobe Air 我终于有时间来整理在flexcamp上演讲的东西并写篇博客了.就在flexcamp前一个月,我几乎天天 ...
- (三)Maven之仓库
目录 引言:坐标和依赖是一个构件在Maven世界中逻辑表示方式,而构件的物理表示方式就是文件而已,仓库就是统一管理这些文件的地方. 目录 仓库类别 本地仓库 远程仓库: 中仓仓库(自带的默认远程仓库) ...
- Delphi XE2 之 FireMonkey 入门(21) - 和 FMX 相关的类(表)
TObject TPersistent TComponent IInterface,IInterfaceComponentReference TBasicAction TControl ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_13_使用字节流读取中文的问题
编码格式右下角显示是UTF-8 前三个字节是你,后三个字节是好.一个汉字占用了三个字节 读一个字节让编程char类型 文件里面后面加上abc abc没有问题 所以java提供字符流.字符流一次读取一个 ...
- Git - 版本回溯
在git push的时候,有时候我们会想办法撤销git commit的内容 1.找到之前提交的git commit的id git log 找到想要撤销的id 2.git reset –hard id ...
- Java日志使用slf4j 配置log4j后,有日志文件 但日志文件内容为空
SLF4J的全称是Simple Logging Facade for Java,即简单日志门面. SLF4J并不是具体的日志框架,而是作为一个简单门面服务于各类日志框架,如java.util.logg ...
- 【SQL Server复制】数据库复制:修改表结构、新增表、新增存储过程 会被复制到订阅服务器?
转自:https://www.cnblogs.com/happyday56/p/3849018.html 关键字:sql server复制 [SQL Server高可用性]数据库复制:修改表结构.新增 ...
- 华为交换机SOCK CPU占用率高处理方法
问题截图: 解决方法: cpu-defend policy cpu auto-defend enable auto-defend attack-packet sample 5 auto-defend ...
- Java之九九乘法表
public class MultiplicationTable { public static void main(String[] args) { for(int i=1;i<=9;i++) ...
- WOJ#1243 蜥蜴 lizard
描述 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任 ...