前端 - 使用用户名作为路径的网站,怎么防止业务路径和用户名冲突?

 

问题描述:

以 Github 为例,用户主页的路径是 github.com/username,
我的疑惑时,用户名是用户自定义的,可以是合法的任何内容,怎么防止用户名和其他页面的路径冲突。

我想到的解决方案是提前将所有业务路径作为保留,当用户注册时,如果用户名和保留路径冲突,则提示用户名已存在。

但是怎么防止在未来的业务扩展时,出现和已有用户名冲突的情况?


 

第 1 个答案:

业务端和用户端使用不同的主机头区分不就可以了吗?
当然一些系统保留字还是需要保留起来的,并且提示用户用户名不可用。

比如用主机头,用户端 www.github.com,业务端就可以是 api.github.com 等等

比如保留字的话,例如都叫 copilot,用户端是 github.com/copilot,业务端就变成了 github.com/features/copilot
注册时候如果想用 features 这个名字,就会有提示:Username 'features' is unavailable.

另外也可以用一些特殊符号来处理,比如说不允许用户名使用 下划线(_) or 短横杠(-) 之类的。那么业务端就可以使用 github.com/_assets/xxx 这种。


 

第 2 个答案:

其实有个很好的办法,就是给用户名添加前缀,比如/u/<username>,或者/@<username>


微服务AppCity,实体类City城市微服务AppCountry,实体类Country国家在AppCountry的Service层中写一个接口package org.foo.bar.country. ...