如何确保用户访问目标网站前必须经过独立域名的门户?
门户前置访问权限的实现方案
方法一:Cookie验证 + 前后端拦截
- 先在
www.web.com门户完成登录逻辑开发,用户通过验证后设置跨域Cookie(需配置Domain、Path、SameSite属性,确保www.example.com可读取),比如设置名为portal_auth的加密身份标识Cookie。 - 在
www.example.com侧添加拦截逻辑:- 前端:页面加载时检查是否存在有效
portal_authCookie,无则直接跳转至www.web.com门户。 - 后端:所有请求抵达后先校验
portal_authCookie有效性,无效则返回302重定向到门户,或返回401状态码交由前端处理跳转。
- 前端:页面加载时检查是否存在有效
- 注意:跨域Cookie需满足两个域名同主域,或在HTTPS环境下使用
SameSite=None+Secure属性。
方法二:Nginx反向代理拦截
- 在
www.example.com的Nginx配置中添加请求拦截规则,检查请求Cookie:server { listen 443 ssl; server_name www.example.com; # 静态资源或无需验证的路径直接放行(可选) location ~ ^/(public|static)/ { root /path/to/your/site; } # 其他请求先校验Cookie location / { if ($cookie_portal_auth = "") { return 302 https://www.web.com; } # 若需服务器端验证Cookie有效性,可添加Lua脚本调用认证接口(可选) proxy_pass http://your-backend-server; } } - 确保
www.web.com登录后设置的Cookie符合上述Nginx的读取规则即可。
方法三:Token跳转验证
- 用户访问
www.example.com时,直接重定向到www.web.com?redirect=https://www.example.com,携带回调地址参数。 - 用户在门户完成验证后,生成一次性有效Token,拼接回回调地址:
https://www.example.com?token=xxx。 www.example.com接收到Token后,调用门户的验证接口确认有效性,验证通过则设置本地Session或Cookie,允许用户访问后续内容。- 该方案无需处理跨域Cookie的复杂配置,适合不同主域的场景。
内容的提问来源于stack exchange,提问作者Viraal Space
相关产品推荐
相关产品推荐

