Go实现Web后端基础功能(附源码)

本文介绍了如何使用Go语言实现包括注册、登录、管理用户等功能,其中登录部分利用session来记录用户状态。文章详细讲解了session的工作原理,推荐使用cookie方式,并给出了mysession.go的实现。此外,还涵盖了单元测试。完整源码可在提供的链接中下载。
摘要由CSDN通过智能技术生成

前言:好一段时间没写过博客了,最近比较坎坷,感叹一下。好了,进入主题,源码在最后的链接
功能:
1、实现注册相关,包括用户名(支持中文),密码,验证码。数据库为mysql
2、登录,用session记录登录状态
3、管理,查询用户列表等,json
4、单元测试
实现:
讲一下session的实现原理,session可以通过url和cookie方式实现,推荐cookie方式,是由服务端产生并维护唯一的session id(简称sid),通过setcookie的方式设置在head头部,浏览器解析并存储,下次访问的时候浏览器会携带sid一起发起请求。服务端可以用map来存储,并用list来做垃圾回收。
mysession.go

package other

import (
    "container/list"
    "crypto/rand"
    "encoding/base64"
    "errors"
    "fmt"
    "io"
    _ "log"
    "net/http"
    "net/url"
    _ "reflect"
    "sync"
    "time"
)

type SessionManager struct {
    Lock       sync.Mutex
    Smap       map[string]*list.Element
    SL         *list.List //gc
    Cookiename string
    Expires    int
}
type Session struct {
    Key     string
    Sid     string
    Expires int
    Value   interface{}
}

/*
说明:只在start中用,并已经加锁,因此这里不需要,否则会引起死锁
*/
func (sm *SessionManager) get(sid string) (Session, error) {
    if element, ok := sm.Smap[sid]; ok {
   
        sm.updateList(sid)
        return *(element.Value.(*Session)), nil
    }
    fmt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值