golang实现页面访问权限控制(验证用户是否登陆)

这是对自己最近一个小项目中问题的记录,需求是只有登录的用户才能进入到该页面,所以需要在该页面进行判断用户是否登陆,开发用到了iris框架,这里用到中间件来实现这个功能。

  • 主要思路是:要实现该功能需要设置一下cookie,在登录页面提交的表单中将用户ID保存到cookie中,在受到权限的页面获取用户ID并判断是否为空,若为空则跳转到登录页面进行登录,否则则可以进入到该页面。
    登录相关代码如下:
func (c *UserController) PostLogin() mvc.Response{
	var (
		userName = c.Ctx.FormValue("userName")
		password = c.Ctx.FormValue("password")
	)
	//比对用户名和密码
	user, isOK := c.Service.IsPwdSuccess(userName,password)
	if !isOK{
		fmt.Println("用户名或者密码错误!")
		//如果没有成功就通过mvc.reponse跳转到login
		return mvc.Response{
			Path:"/user/login",
		}
	}
	//设置cookie
	tool.GlobalCookie(c.Ctx,"uid",strconv.FormatInt(user.ID,10))
	c.Session.Set("userID",strconv.FormatInt(user.ID,10))
	return mvc.Response{
		Path:"/product/detail",
	}
}

中间件(验证用户是否登陆)

func AuthConProduct(ctx iris.Context){
	//在user_controller中提交登陆表单的时候设置了cookie,所以在这里直接从上下文获取
	uid := ctx.GetCookie("uid")
	if uid ==""{
		ctx.Application().Logger().Debug("请先登陆!")
		ctx.Redirect("/user/login")
		return
	}
	ctx.Application().Logger().Debug("已登陆!")
	//继续请求上下文
	ctx.Next()
}

记得在main文件中将中间件注册到product中

    //注册路由
	proProduct :=app.Party("/product",middleware.AuthConProduct)
	proPro   := mvc.New(proProduct)//注册到框架上
	//将验证注册到product中
	proProduct.Use(middleware.AuthConProduct)
	//将service以及session绑定到控制器中
	proPro.Register(productService,orderService,sess.Start)
	proPro.Handle(new(controllers2.ProductController))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值