要实现golang对接cas认证,请查看golang实现CAS认证
背景
使用gin对接cas认证,当认证通过后需要记录登陆状态避免重复重定向到登录页
问题以及分析
当使用session时会发现登陆过后能正常写入session,但是第二次请求时候又会被重定向到cas登陆,这是因为cookie没用被正常写入。检查前端请求的响应头和请求头的cookie时发现报错“尝试通过Set-Cookie标头设置Cookie时被阻止,因为它具有“Secure“属性,但未通过安全连接发送”。这是由于本地服务是通过http而不是https协议,所以不允许setcookie。
解决方案
1、如果你的服务是http的,在创建session时,需要将Secure设置为false,
store.Options(sessions.Options{
Path: "/",
Domain: "", // 设置你的域名,留空则为当前域名
MaxAge: 86400 * 7, // 一周
HttpOnly: true,
Secure: false, // 在生产环境中设置为true以确保安全传输
})
2、如果你的服务通过nginx反代,还需要检查nginx的配置中是否有Secure:配置,如果有需要将其删除。