JSF2.0 中的会话无效

发布于 2024-12-07 09:16:35 字数 720 浏览 1 评论 0原文

我正在使用 JSF2.0 和 jsp。我正在尝试将会话失效合并到我的项目中。我尝试使用以下代码。

<h:commandButton value="Logout" action="#{bean.logout}" </h:commandButton>

我的 bean 类包含以下方法

   public class Bean{
    public String logout(){
      FacesContext context = FacesContext.getCurrentInstance();
      HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
      session.invalidate();
      return "login";
    }
   }

,其中字符串登录重定向到登录页面。

我的项目有几个页面,其中包括标题页..当我尝试上述方式时...当我从第一页单击注销时,它工作正常...如果我在转到其他页面后尝试相同的操作页面,它没有注销。任何人都可以帮助我吗...这就是我们在这里使会话无效的方式吗???

更新

我还尝试在导航规则中使用“*”,以便每个页面都可以重定向到登录...但问题仍然相同

I'm using JSF2.0 with jsp.I'm trying to incorporate session invalidation in my project.I've tried using the following code.

<h:commandButton value="Logout" action="#{bean.logout}" </h:commandButton>

and my bean class contains the following method

   public class Bean{
    public String logout(){
      FacesContext context = FacesContext.getCurrentInstance();
      HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
      session.invalidate();
      return "login";
    }
   }

where string login redirects to login page.

my project has several pages which includes a header page..when i tried the above way...it was working fine when i click on logout from the very first page...If i try the same after going to other pages, its not logging out.Can anyone help me on this...is this the way we invalidate a session here???

UPDATE

I also tried using "*" in the navigation rule so that each page can be redirected to Login...but still the issue was same

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清秋悲枫 2024-12-14 09:16:35

尝试

return "login?faces-redirect=true"

作为结果,以便浏览器不会对登录页面使用相同的请求,该页面的会话仍处于活动状态。

Try

return "login?faces-redirect=true"

as outcome so the browser does not use the same request for the login-page, which has the session still active.

能否归途做我良人 2024-12-14 09:16:35

您是否尝试过此操作 -

return "/login?faces-redirect=true";

如果查看登录名位于根目录中。

否则,如果它位于其他文件夹中,则如下 -

//if it's in the folder - folder1
return "/folder1/login?faces-redirect=true"

注意结果开头的 /

Did you try this -

return "/login?faces-redirect=true";

If the view login is in the root directory.

Otherwise if it's in some other folder then as follows -

//if it's in the folder - folder1
return "/folder1/login?faces-redirect=true"

Notice / at the beginning of the outcome.

时常饿 2024-12-14 09:16:35

使用 remoteCommand 标记,并在注销时使用 JavaScript 调用此 remoteCommand 并在 managementBean 中提供用于注销的实现,并且可以将实现粘贴到此处只需在此处输入代码即可重定向到登录页面,或者您可以再次使用 JavaScript 重定向到登录页面。

<h:commandButton value="Logout" onclick="closeSession();" </h:commandButton>

<p:remoteCommand name="closeSession"
action="#{jobController.logout}">

public class Bean{
    public String logout(){
          FacesContext context = FacesContext.getCurrentInstance();
          HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
          session.invalidate();
          return "login?faces-redirect=true";
   }
}

Use remoteCommand tag and on logout call this remoteCommand using JavaScript and provide the implementation in managedBean for the logout and the implmentation is ok that you paste here just need enter code hereto redirct to login page, or you can use again JavaScript to redirect to login page.

<h:commandButton value="Logout" onclick="closeSession();" </h:commandButton>

<p:remoteCommand name="closeSession"
action="#{jobController.logout}">

public class Bean{
    public String logout(){
          FacesContext context = FacesContext.getCurrentInstance();
          HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
          session.invalidate();
          return "login?faces-redirect=true";
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文