有认证的登陆的网页,如何限制用户的从外网访问网页,只允许部分用户从外网访问 web

4 天前
 supermama

我有一个网站,目前是通过路由做了 nat 映射,允许用户通过外网直接访问网站,用户也可以在内网通过访问公网的 IP 来访问这个网站。 现在我想添加一个限制: 用户如果是在外部网络(如果是通过 vpn 也认为是内网)访问这个 web 网站,检查数据库中该用户是否允许通过外网来访问网站,如果允许则放行,不允许则拒绝。 目前我是这样处理的: 1 ) web 后端添加一个 api /auth ,前端在 login 网站前先通过这个 api 的私有地址访问这个 api ,如果访问得到证明这个用户目前在内网,反之在外网。并且将 auth 返回的 token 记录在前端 2 )在执行 /login 的时候,将 token 携带到 login 的请求头, 后端收到这个请求头,如果含有这个 token 就可以判断用户是否在外网了

存在的问题: 由于访问 /auth 用的是私有地址,但访问 web 网站用的是公有 ip ,导致会涉及到跨域访问,目前 chrome 浏览器做了安全限制,需要将私有地址手动的添加到允许访问列表。 但是我们目前想让用户无感,最好用户什么都不需要操作。所以想请问下,是否有其它更好的方案,对用户使用无感的操作,当用户在访问 web 的时候就能准确知道用户是否在内外网,便于下一步的权限控制。

1924 次点击
所在节点    程序员
24 条回复
chobitssp
4 天前
做个 electron 应用(也可以是别的) 让客户先安装 前端通过应用判断是否内网
lisongeee
3 天前
私有网络访问限制 https://developer.chrome.com/blog/private-network-access-update?hl=zh-cn

最无感的方式是买个域名后控制台解析 A 记录到 192.168.0.xx ,申请 ssl 证书,直接用 https 访问

你的现有操作都是在 http 上下文,它就是有很多限制,直接升级到 https 就完了呗
cat1879
3 天前
我以前弄类似的,感觉你这个需求和我当年类似。我这个是内网不限制,外网访问时加个扫码或者 auth 的认证。认证的 IP 允许一段时间进行访问
supermama
3 天前
@cat1879 是的,内网不限制,只限制外网。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1084126

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX