我想创建一个Struts2 Web应用程序,其功能如下:
如果用户A正在登录,那么他可以访问该应用程序,如
http://product.com/a/login.jsp
如果用户B正在登录,则
http://product.com/b/login.jsp
等等。
我怎样才能做到这一点?
这样做好吗?或者我可以使用子域名吗?
答案 0 :(得分:1)
我很确定它不会那样:在GMail中(以你为例),每个用户在登录后都会被重定向到同一个位置:
如果您启用 Google多帐户登录,他们将分别存储不同的登录凭据服务器端,并将使用不同的客户端Cookie,名称相同但路径不同:
第一帐户登录Cookie:
Name : S
Content : gmail=someRandomHash
Server : mail.google.com
Path : /mail/u/0
第二次登录的Cookie:
Name : S
Content : gmail=someRandomHash
Server : mail.google.com
Path : /mail/u/1
然后,当从一个帐户切换到另一个帐户时,他们会将您重定向到其他网址:
第一个帐户邮箱网址
第二个帐户邮箱网址
一旦对它们进行了身份验证,您只需访问相对URL即可手动在不同的邮箱之间切换(如果您有多个帐户,请尝试)。
结论:Google使用不同的Rest URL(带有命名变量,在本例中为u
:user)来区分多个帐户...对于同一台PC。
增加的价值是您可以在多个帐户之间切换,而无需注销第一个帐户,每次登录到第二个 。
这与分离URL以处理不同计算机上的不同帐户无关。
答案 1 :(得分:0)
您必须实施过滤器,然后检查请求并重定向到正确的视图。
请勿使用根据https://issues.apache.org/jira/browse/WW-3742弃用的内容:
FilterDispatcher(Deprecated)
我建议:
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
首先我说你需要这个请求:
HttpServletRequest request = ServletActionContext.getRequest();
然后找到这样的请求网址:
String spath = request.getServletPath();
现在你解析你的URL,然后转发到正确的视图(pages:jsp,html ...)