00:00
来啊,下面呢,我们来实现这个登录和注销,哎昨天呢,也把这个登录的这个呃我的啊我的这个呃逻辑就是这个想法,怎么来实现这个思路呢,给大家说了一下,因为我们这个呢,呃昨天说了绘画控制说了cookie,我们也知道怎么来创建cookie,怎么来获取cookie,但是这个嗯这个我们说了啊这个cook艺呢,它有缺陷,哎比呢它只能这个哎它是铭文的哎等等啊还有这个呃数这个浏览器呢,对它的数量啊,还有大小的一个限制,包括这个能存只能存这个S型的一个值,而且呢,你这个每次发请中呢,携带过多的这个cook费呢,它也这个分流量,对吧,那所以呢有session审啊以以及这个session审的这个原理呢,哎我们这个也说过了啊,也说过了,哎,当你这个发请求时候呢,我们把这个呃,在服务器端呢,创建一个session啊,还有一个啊,这个存存这个数据存在哪cookie呢,它是保存在客户端呢,也就浏览器里边的,你那个信息在cookie里边的,还是保存在浏览器。
01:00
这个端的session审呢,是保存在服务器这端的,就是这个呃,保存数据的这个地方啊,发生了变化,那我们这个在呃session审创建完session审之后呢,你你得这个有一个标识,就让这个客户端发起的时候,怎么能找到这个session,所以呢,我们还需要再创建一个cookie,所以啊,也就是说我们这个session呢,也是依赖于cookie啊,也依赖于cookie。那我们这个创建的session呢,它有一个ID,比如全球唯一的一个ID,我把这个cookie的Y流值呢,设置为这个ID,那这时候呢,它两个就有一个关联关系,我通过这个cookie的Y6值呢,就能找到session,相当于我就找到了一个用户信息了,因赛里面保存的用户,诶诶这个我我创建好session,创建一个特殊的cookie,把它发给浏览器,那以后浏览器呢,每次发请求携带这个cookie,那我通过cookie的值就能找到session,诶就进而就知道了啊哪个用户来发这个请求,整个的一个这个呃session啊怎么这个呃工作的啊,怎么工作的好,那下面啊,我们先把这个。呃,需求得先演示出来啊,我们来运行一下我们这个项目。
02:10
我们演示一下我们的登录功能。之前已经写好的一个灯笼。首页。好,来登录。123。密码。输错了。登录好,现在啊,现在呢,这个显示的是欢迎,嗯,这个并不是我们的命,其实啊,现在呢,以我们这个现在的实现也能显示欢迎谁,但是呢,只能这个你这一次性就能显示,那比如这块啊,我们这个稍微改一下,但最终我们肯定不这样做啊,找到我们的user handler,你不是想显显示换迎谁谁谁吗?我们这个用户名和密码正确这一块。哎,我这个呢可以,比如这块,我是不是可以把那个用户名给你想象过去啊。
03:03
诶,对吧,有这块啊,我这样干什么呢?User点了一个。你们那个是什么呀。或者我把U的直接想象过去。也可以吧。这个验证之后,是不是得到了一个user啊,对吧?哎,我把user想象过去,把user想象过去,User想象过去之后呢,在我们的成功页面找到我们的。Pages user。Logging success,那在这呢,我们这块呢,就就就是这样了。删掉。来了个删掉。点一个我们那个叫。User name,第二个是不是大写?好长时间了是吧,忘记了,哎,不是。不是大写userme。好啊,把这个改一下,改完之后呢,我们再来试一次回来。
04:02
刷新一下。对,得重新编译一下是吧,CTRLC,我改后边的代码了,Go build,慢点go。来,再来一次刷新。德利。123456。登录。好诶,欢迎in,哎,我们换一个,你们有几个用户啊。连接一下。我们的打开。ADINDIN2丁3AIN4,好啊,换一个ADIN4。啊,在面试。来一个。
05:02
登录好我的名思,哎现在也能实现对吧?哎欢迎谁登录,但是呢,我们这个返回这个返回,哎返回这个潮流你还没改呢。把这个呢改了返回。好,当你返回的时候。你来一次啊,搞的命。登录好诶来返回这个时候返回到首页,呃,这块是不是应该是一个登录状态了呀,对吧?诶那现在呢,你这个不能是这个显示登录注册了,我已经登录过了,所以呢,这块还是应该是欢迎欢迎谁谁谁后边再是购物车啊或者个其他的啊其他内容了,所以呢,这块就不能是这样了,就不能这样了,所以呢,我们肯定不能这样啊,只能这样实现,只是这个哎登录之后呢,一一看哦谁谁谁登录了,登录了,但是现在并没有真实的一个登录啊,在整个绘画里面呢,你是看不到,看不到这个用户这个信息的,只有那一次请求啊,我才这个拿到这个U的,然我能写示这个用户名,所以啊,那这个呢,诶怎么办呢?诶我们这个思路,哎就是这样,哎当。
06:08
当你这个登录成功之后,哎,登录成功之后干什么呢?我来创建一个这个session,一会创建一个结构啊,创建一个session session里边呢,我们这个字段,我们现在就来创建啊。那这样来右键新建一个文件叫session。点够。好。啊,写个注释。好,那创建一个session,然后那个session呢,哎,我们这个把它,我们把它保存到这个数据库里边,把存到数据库里边,这里边整哪些字段呢?我们整一个这个session ID。
07:05
哎,这个session ID,因为我们说了啊,这个session呢,它有一个全球V的ID,所以呢,我们来给整一个session ID string类型,这个呢,我们通过这一个UUID来生成啊,等会我们通过UID生成一个30ID,就是一个32位的一个字母数字混排的一个数啊,很长的一个串,然后呢,诶同时呢,我们在里边也可以保存一下,比如保存一下我这个用户名U的name,保存了这个U的name之后呢,将来呢,我们就可以这个通过从session里边拿这个用户名登录成功之后,有了这个session,我这里边保存了个用户名啊,保存用户名啊,整一个这个,呃,String那们也整一个string。然后呢,诶,我们再放一个啊,我们再放一个user的一个ID,那在这个呢,将来我们在数据库里边呢,呃,把它整成一个外键,跟我们的user表关联一下,也就是你这个用户的啊,对应的这个,对应的这个啊,给它关联一下啊,所以呢,我们再来整一个user的一个ID,用户的一个ID,那这个呢,我们整一个int类型,Int类型好,这是我们这个啊。
08:06
应该要求很大写是吧?哎,Int诶需要跟我们这个user,我们之前写这个user啊里边这个主键,因为我将来要整一个Y键,跟它这个类型要保持一致了啊保持一致了好啊,这是这个session的这个结构,哎,我们将来将来登录成功之后呢,我创建一个session,创建个session呢,用UUID生成一个呃SESSION10ID给它设置进去,同时呢,我把这个用户的用户名也放进去,用户的这个ID呢也放进去,把它保存到这个,保存这个数据库里边,保到这个呃买色库里边啊保存进去,那保存进去之后呢,呃,这个在这块啊,我这个显示出来谁谁谁登录,当我再点其他请求的时候,因为呢,我这个创建session之后啊,保存session之后呢,我还得创建一个特殊的cookie,就是我来创建一个cookie,把这个session的ID呢给那个cookie的Y6值。哎,发送给浏览器之后,下一次我再发起之后,它是不是会携带那个cookie啊,对吧,它会携带那个cookie,然后呢,我获取cookie的Y6值,然后去数据库里边看看有没有对应的session,一查有啊,这个就能证明啊,你已经是登录状态了,就是这个啊,我们这个逻辑啊,我们这个逻辑好,那现在有了它之后呢,我们也需要给它创建一些对数柱的一些操作的一些函数或者说方法,那我们这样啊,跟我们这个之前的这个方式一样,这块怎么了,怎么绿了呢?
09:34
就是打衣服。不写大括号,直接return上是吧。尽量不要了,直接return是。还是这个爆爆爆,抱着一个绿了啊,看着不是不舒服呢。
10:07
那就这样啊。好了啊,这个就是这个提示,确实感觉不是很好是吧。包括这个注释的,哎,昨天有学生也说了啊,不过呢,嗯,我有强迫症,我不知道你们有没有强迫症啊,我看着他就是不爽是吧?来啊,我们在这个Du这块同样啊,我们跟其他的这个一样啊,我们在这当然啊,在这个30这个结构下边呢,写方法也可以写这个方法,只是呢,方法比函数前面多了一个类型嘛,多了一个呃括号啊,多了个它,那那我们还是跟之前那一样吧,我们再来创建一个。吧。嗯,来看。好。那在写这个,呃,写这个函数之前啊,我们得先在数据库里边呢,创建一张表,在这块来create table,还一个比如sessions。
11:13
好,第一个呢,是这个session ID。What?整一个255或者100吧,还是100吧,然后呢,整一个pri。逐渐那这个呢,就不是自增了,就不是自增了,我们这个直接传过来的一个字符串,嗯,第二个呢,是这个U的name。第三个是user的一个ID。这个是int类型。好,然后呢,我现在想让这个U的ID作为一个外键,这个命令应该是啥样。Foreign key user。
12:01
ID,然后。User里边的ID。对吧,那就这样啊,给它加一个外键,加一个外键好哎,来现在呢,我们来执行一下。好,成功了F5。F5。好,哎。打开啊,就这样的一个表啊,这样的一个表,好哎现在呢,哎是空的,哎是空的啊下面我们来写写一些对这个表的一些操作的一些函数,比如呢,我想里边添加session,我在这我把session移除,删除session,当你注销的时候呢,我需要把这个session给它干掉,诶干掉干掉之后呢,就相当于这个没有登录的一个状态了啊没有登录一个状态了,所以呢,哎来在这来写第一个。就添加ad吧。像这个数据库中。
13:13
Ad sessionon啊,那这里边传什么呀?那边里边传什么参数啊。ID。直接传一个。Session。可不可以?然后在这里边啊,我们来写这个四口语句。
14:08
等于insert。度。SESSION4。啊,这个啊,我这个所有的字段呢,都都需要传进去啊,都需要传进去,所以呢,这个括号我是不是可以不写呀Y。括号好,哎,就是这个,嗯,等于组session前我要往这里面插入数据了,因为这三个字段呢,我都需要这个指定,所以啊这块呢都需要插入,所以呢就不用写啊,直接省略了,直接省略,直接写那个Y63个问号,好诶那下面呢,我们来这个执行执行这个circle。点一个DB。点一个。Excuse。
15:01
这个里边circle。第二个ses加一个session ID。一个username。Ses点一个user ID。好。来,诶看这返回一个result。一个。好。你上一个好。好,哎,这是这个,嗯,这是我们这个添加,嗯,添加我们来再写一个删除的。
16:07
例。啊,这里边呢,就是一个session ID了。同样,哎,写这个circle就。SDR等于。Delete。B。Where session ID。等于括号。好。然后下面同样也来执行思考。Newles,第一个DB,第一个cute。
17:03
STEM。SEID。好,来,就是这个啊,同样来。嗯。没事。好,就是这个没错。每天一个。好啊,这是这两个啊,两个这个函数,一个是删除的,一个是添加的,那啊那这个写完了,我们来测试一下。再写一个。Du。一个a session。
18:00
T。D。直接添加啊,这是这个添加。然后呢,我们这个先测添加啊,然后我们再来测这个删除在这块呢,我们这样。咱们把这个上面这个。Textbook。把这个呢丢掉了啊,不扯它了。我们再来写一个,在它上面写一个。那都煮掉了。一个session。T。test.t好,Fmt点一个。30。Session。相关函数。好,下边呢,来t1.1个run。
19:02
测试添加。逗号。Testing a。三。好,那在这里边啊,我们来调一下这个方法。来一个。里边传一个session,所以呢,我们需要来创建一个ses,等于。Model。第二,一个session。第一个哎,Session ID。咱们这个自己随便指定一个了啊,先自己指定一个,指定一个什么呢。嗯,138。3838。啊,你是三八。好,就这样了啊。438位数不够是吧。就是这这样位数就够了,好,那就这样了。
20:01
好,下一个呢,嗯,Username。留在那我们来整一个什么呢,张。张三,诶,对,我昨天又看到马蓉了,不是看到马蓉了,是在这个在那个哪,在网上在在哪啊,突然间。突然间说他干啥呢,然后把它写上啊,然后呢,这个user的一个ID。U的ID这个呢,就不能乱写了啊,我这是一个外键,外键,所以呢,得保证我这里边U的里边有。1234,诶怎么还有个空的呢,那就是五了。就是五了啊,ID好保存一下。好了啊,这是这个session,下面呢,我们来把它添加进去。DA点一个。哎,不用不用油了。
21:02
Ass。嗯。哎,添加好,来,我们来测试一下。Go。好,诶成功了,诶来看。Sessions。好没问题啊,进来了,哎,进来了就是这个啊删除啊,就是这个添加添加,那能添加我们就能删除。来,添加完立马删除。点T。行。删除这一个delete。传一个ID。把这个ID传过去。
22:01
CTRLC。好,来测试。删除。删除。Session test,一个delete。Delete。You need。好,来啊,再来一次go test。好诶成功了,来刷新一下,好没问题啊,嗯,没问题,可以两个方法没问题,好,那这个啊这个呃,结构跟表我们写完之后呢,下面我们来找到我们的user handler。来,我把其他图片关掉啊。还没右侧。然后在这登录,这是处理用户登录的一个函数。
23:02
那这个啊,如果右角ID大于零,证明用户名和密码正确,诶,那在这我需要干啥呢。用户名和密码正确证明是不是要想登,登录成功了要马上对吧,所以呢,在这我来干什么呢。来创建。放在一个什么呢?Session。哎,我要保存你这个用户的一些信息了嘛,我要创建一个赛事了,诶所以呢,在这s SE ss就叫他了啊等于。Model点一个。Session。Handler model点一个on。好创建一个它,哎里边呢,需要指定这个,需要指定这个30ID了,那这个30ID呢,我们需要我们用一个UUID,所以啊,我们这个。昨天发的那个我的,我把这个粘过来啊,我这个。
24:03
Us里边有个UUID,我把这个文件呢给粘过来,这个工具粘过来放到我们的。放到我们的U之下。好啊,就这个,哎,我要我要用它呢,来生成一个UUID,就用它生成一个字符串,一个定类型的,诶昨天你测这个函数了吗。看那个值了吗?哎,一会我们保存进去后,让你看一下啊,一个32位的一个字母数字混排,加上这个减号的一个串啊一个串好哎,那有了它之后呢,诶来。我们在这继续。有了这个文件之后呢,我们用它来生成这个UUID。哎,所以呢,我们写到上面吧。使用这个什么呢?这样生成一个UUID作为session ID。好点一个create u u ID。
25:04
好哎,掉一下它,哎,得到一个UUID等于等于它,好哎,就这个啊UUS。嗯,好,诶没问题啊,没问题掉了,我们刚刚这个。拷过来的这个应用id.go这个文件里边这个函数啊,这个函数好,那生成这个UUID柱呢,下边创建这个session,创建session里边我们来指定这个session ID。就是这个悠悠。ID好,这是第一个,那第二个呢是username。Username,我们上面有user了。用ulan,其实这块也有U的name,你这块这个用户名和密码本来就是正确的啊,或者你用U点。User name也是可以的啊,也是可以的,我们这个user这样一个。Username username啊,第三个是user的一个ID。
26:00
有的这样一个ID好逗号,好诶有这个session了,创建这个session,那创建完这个session之后呢,我需要把这个session呢,保存到这个数据库里边,所以呢,呃将这个session。用这个DA点一个。ADD session。里边穿一个session。好,哎,保存进去了,那现在呢,诶用录用户登录了,诶数据库里边有session了,但是你是不是得让浏览器有一个标识跟它相关联,对吧,所以呢,下面我需要干啥呢。我是不是得创建cookie了呀?对吧,我得创建cookie啊来创建。创建一个什么呢?Cookie。哎,这个让他什么呢?让他与这个session关联。
27:06
相关联。好来怎么创建cookie啊。HTTP点一个。Cookie。对吧,Cookie的一个。Name,原来我就整一个user。然后下边是一个Y6,这个Y6还能乱指定吗。是啥呀?应该是这个UUID吧,对吧,因为30里边这个值是不是UUID,然后现在我把它的值整成UUID,下次你发请求携带这个cookie之后,我得到这个Y了,是不是就能找那个session了,对吧?哎,所以这块啊,UUIDUID好哎就是这个啊,下面呢,我们也可以再加一个,比如什么呢?HTTB。
28:03
等的书等等啊,这个你也可以不加啊,可以不加好保存好,现在有了一个cookie了,那下面我是不是得把这个cookie。给浏览器啊,加那个cookie。能发送给浏览器,怎么发送给浏览器啊?怎么发送呢?那个快速的方法是什么?P点一个。Set一个cookie。诶,传一个这个。W传一个。And。And cookie and cookie好这个啊,就是这个好,那现在啊,我们这个。嗯,每次这个发请求呢,诶把它发送过去呢,以后每次发请求就会携带着这个cookie了,那我根据那个cookie是不是就能找到数据库里面那个session了,对吧?诶那这时候呢,哎,我就知道呢,啊你是登录状态了啊登录状态了好那现在啊这块的这个代码我们写完了,那下面呢,我们测一下,看能不能在数据库里边呢生成一个session,同时呢,看一下我再发请求呢,会不会诶带着那个cookie就是这个我们写好的这个cookie,好来我们来重新哎把这个关掉。
29:30
CTRLC下。Go build,慢点,Go。慢点,一个exe。好,哎,来。刷新一下。首页来登录,我们来一个德命。耳的命啊,我刚刚登的耳的命四是吗?888888好,来登录。啊,登录成功了,我们来看数据库啊刷新。
30:03
诶注意了,哎,这是不是有一个30ID很长的一个串对吧?哎,然后呢,这个谁登录呢?奥丁IN4,然后呢,这块也有一个user啊,对应的是奥丁字一个外键,好哎,这是第一步,哎,Session保存进去了,那么看看我下次发起中会不会携带着cookie,携带cookie好我们来啊这个我们F12看一下。来返回。点开麦往下翻。Cookie呢?啊,在这是不是U的等于什么什么对吧,是不是以后每次发请求携带的它对吧,那携带的它,我是不是根据得到这个U的后边这个值就能查有没有session了。对吧,诶有没有三身了,诶如果查到我就证明哦,你已经登录过了,诶你已经登录过了,诶如果这个诶没有查到,诶这个你没有登录,哎没有登录对吧?诶所以这块啊,你再点这个man去访问首页的时候,你就可以干什么呢?我来根据你这个cookie来获取一下,获取下,然后在这呢来这个显示这个,呃登录啊还是欢迎谁谁谁了啊欢迎谁谁啦,好啊这是这个第一步,第一步诶我们这个能保存进去,这个session也能这个携带cookie我们完成了,好那第二步呢,就是我们把这个来显示一下啊。
31:36
好啊,我先停一下,你把刚刚我写的这个,你把表该创建的表给创建一下,然后呢,把这个,嗯,这个结构呢,你创建一下,然后呢,我们再说这个显示这一部分啊。
我来说两句