生啃golang iris 框架

没有视频教程,靠着英文文档,生啃golang iris 框架 

web 启动 

package main

import (
	"app/views"
	"github.com/kataras/iris/v12"
)

func main() {
	// 分配路由组
	app := iris.New()
	// 设置调试模式
	app.Logger().SetLevel("debug")
	views.Urls(app)
	// 错误处理,启动web,监听80端口
	err := app.Run(iris.Addr(":80"))
	if err != nil {
		return
	}

}

路由分配

package views

import (
	"app/controllers"
	"github.com/kataras/iris/v12"
	"github.com/kataras/iris/v12/view"
)

func Urls(app *iris.Application) {
	app.Any("/", controllers.Index)
	// 设置模板渲染路径请求
	app.RegisterView(view.HTML("./templates", ".html"))
	// 用户注册 支持所有类型
	app.Any("/register", controllers.Register)
	// 用户信息
	app.Any("/info", controllers.UserInfo)
	// 用户登录
	app.Any("/login", controllers.Login)

}

绑定登录函数

package controllers

import (
	"app/middleware"
	"fmt"
	"github.com/kataras/iris/v12"
	"github.com/kataras/iris/v12/context"
)

func Login(c *context.Context) {
	switch c.Method() {
	// GET 请求处理
	case iris.MethodGet:
		err := c.View("login.html")
		if err != nil {
			return
		}

	// POST 请求处理
	case iris.MethodPost:
		username := c.FormValue("username")
		password := c.FormValue("password")
		session := middleware.SessionManager.Start(c)
		session.Set("username", username)
		c.Redirect("/info")
	// 直接返回 404 页面
	default:
		_, err := c.HTML("404 requests")
		if err != nil {
			return
		}
	}
	// 中间件打印路由信息
	c.Next()
}

绑定登录成功后的函数

package controllers

import (
	"app/middleware"
	"fmt"
	"github.com/kataras/iris/v12"
	"github.com/kataras/iris/v12/context"
)

func UserInfo(c *context.Context) {
	// 登录成功,获取会话对象
	session := middleware.SessionManager.Start(c)
	// 获取从会话中获取当前登录用户的用户名
	username := session.GetString("username")
    // 用户名不存在,直接返回登录页面
	if username == "" {
		c.Redirect("/login")
		return
	}
    // 用户名存在,直接登录
	err := c.View("user_info.html", iris.Map{"username": username})
	if err != nil {
		return
	}

}

设置会话配置 

package middleware

import (
	"github.com/kataras/iris/v12/sessions"
	"time"
)

var SessionManager = sessions.New(sessions.Config{
	Cookie:  "userid",
	Expires: 60 * time.Hour,
})

登录html

<!DOCTYPE html>
<html>
<head>
    <title>登录面板</title>
    <style>
        body {
            font-family: Arial, sans-serif;
        }

        .container {
            width: 300px;
            padding: 16px;
            background-color: white;
            margin: 0 auto;
            margin-top: 100px;
            box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.3);
        }

        input[type=text], input[type=password] {
            width: 100%;
            padding: 12px 20px;
            margin: 8px 0;
            display: inline-block;
            border: 1px solid #ccc;
            box-sizing: border-box;
        }

        input[type=submit] {
            width: 100%;
            background-color: #4CAF50;
            color: white;
            padding: 14px 20px;
            margin: 8px 0;
            border: none;
            cursor: pointer;
        }

        input[type=submit]:hover {
            background-color: #45a049;
        }

        .register-link {
            margin-top: 10px;
            text-align: center;
        }
    </style>
</head>
<body>
<div class="container">
    <h2>登录面板</h2>
    <form method="post">
        <label><b>用户名:</b></label>
        <input type="text" placeholder="请输入用户名" name="username" required>

        <label><b>密码:</b></label>
        <input type="password" placeholder="请输入密码" name="password" required>

        <input type="submit" value="登录">
    </form>
    <div class="register-link">
        <a href="/register">还没有账号?点击这里注册</a>
    </div>
</div>
</body>
</html>

登录成功后的html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>欢迎您,{{ .username }}</h1>
</body>
</html>

目录结构

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值