Web应用程序具有针对不同用户的不同URL

时间:2013-08-01 12:54:25

标签: java java-ee login struts2 restful-url

我想创建一个Struts2 Web应用程序,其功能如下:

  • 如果用户A正在登录,那么他可以访问该应用程序,如

    http://product.com/a/login.jsp
    
  • 如果用户B正在登录,则

    http://product.com/b/login.jsp
    

等等。

我怎样才能做到这一点?

这样做好吗?或者我可以使用子域名吗?

2 个答案:

答案 0 :(得分:1)

我很确定它不会那样:在GMail中(以你为例),每个用户在登录后都会被重定向到同一个位置:

  

<强> https://mail.google.com/mail/

如果您启用 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

然后,当从一个帐户切换到另一个帐户时,他们会将您重定向到其他网址:

第一个帐户邮箱网址

  

<强> https://mail.google.com/mail/u/0/

第二个帐户邮箱网址

  

<强> https://mail.google.com/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 ...)