相关疑难解决方法(0)

注销后阻止用户查看以前访问过的安全页面

我要求最终用户在注销/注销后不能返回受限页面.但目前最终用户可以通过浏览器后退按钮,访问浏览器历史记录或甚至通过在浏览器的地址栏中重新输入URL来实现.

基本上,我希望最终用户在注销后不能以任何方式访问受限制的页面.我怎样才能做到最好?我可以用JavaScript禁用后退按钮吗?

jsp servlets back-button logout browser-history

99
推荐指数
2
解决办法
6万
查看次数

避免JSF Web应用程序上的后退按钮

我正在展示非常敏感的数据.用户从我的服务器注销后,我不希望其他用户能够看到数据点击浏览器的"后退"按钮.

我怎样才能做到这一点?

browser jsf back-button

46
推荐指数
2
解决办法
4万
查看次数

如何处理数据库中用户的身份验证/授权?

目前,我正在使用JSF 2.0,Tomcat 7和MongoDB开发一个Web项目.我有一个很大的问题,如何处理数据库中用户的会话管理和身份验证/授权.

我想要的结构如下:只有登录用户才能创建事件,每个人都可以看到创建的事件.

  • create.xhtml - >仅适用于已登录的用户.
  • events.xhtml - >为大家公开.

我计划的基本结构是:

  • 检查页面是否需要登录用户(例如create.xhtml)
  • 如果是,请检查用户是否已登录
  • 如果用户未登录,请转到 login.xhtml
  • 如果成功登录,请返回请求的页面
  • 除非用户单击"注销"按钮,否则请保留"用户已登录"信息.(我想@SessionScoped进入比赛)

问题是:

  1. 这种不那么复杂的方法是什么?
  2. 我应该在哪里使用@SessionScoped注释?在Create.javaLoginManager.java
  3. 对于我的问题,Spring安全性看起来很复杂,我真的需要它吗?如果是的话,你能解释一下实现如何与JSF 2.0和Mongo DB一起工作吗?

database authentication jsf authorization java-ee

28
推荐指数
1
解决办法
3万
查看次数

如何控制JSF中的访问权限?

我希望在用户登录系统后控制访问权限.

例如:

administrator : can add, delete and give rights to employee
employee : fill forms only
...
Run Code Online (Sandbox Code Playgroud)

因此,在知道用户具有哪些权限后,检查数据库,我想限制该用户可以看到和执行的操作.有一个简单的方法吗?

编辑

@WebFilter("/integra/user/*")
public class LoginFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {    
        HttpServletRequest req = (HttpServletRequest) request;
        Authorization authorization = (Authorization) req.getSession().getAttribute("authorization");

        if (authorization != null && authorization.isLoggedIn()) {
            // User is logged in, so just continue request.
            chain.doFilter(request, response);
        } else {
            // User is not logged in, so redirect to …
Run Code Online (Sandbox Code Playgroud)

jsf login-control jsf-2 servlet-filters

22
推荐指数
1
解决办法
3万
查看次数

使用JSF 2.0/Facelets,有没有办法将全局侦听器附加到所有AJAX调用?

有没有办法将全局侦听器附加到JSF中的所有AJAX调用?也许通过阶段听众或其他什么?

这是一个难题...让我们说你正在使用f:ajax标签和像apache shiro之类的东西,你让你的会话到期.然后你回来并点击一个附有f:ajax的按钮.服务器将以302重定向响应登录页面.

用户什么也看不见.他们可以反复点击并调用ajax调用,但对他们来说应用程序只是"死了".

所以,我的问题是,有没有办法将监听器附加到JSF中的所有ajax调用?如果是这样,我想做的是监控响应代码.如果是重定向,请使用window.navigate沿途发送它们.

我总是乐于听取其他人如何解决这个问题!

java ajax redirect listener jsf-2

11
推荐指数
1
解决办法
5004
查看次数

在JSF 2.0中注入Bean

我有一个Session scoped bean

import javax.faces.bean.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class SessionBean implements Serializable{
Run Code Online (Sandbox Code Playgroud)

我在一个过滤器中进行了对象...

public class FiltroSeguridad implements Filter{

@Inject
private SessionBean sessionBean;

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
  HttpServletRequest httpRequest = (HttpServletRequest) request;
  sessionBean.setRutaRedirect(httpRequest.getRequestURI());
}
}
Run Code Online (Sandbox Code Playgroud)

但是,我在下一次互动中使用SessionBean ...

@Model
public class CuentaUsuarioWebBean implements Serializable{
 @Inject
 private SessionBean sessionBean;

public void loginUsuario() throws IOException{
   sessionBean.getRutaRedirect();
}

}
Run Code Online (Sandbox Code Playgroud)

但该属性getRutaRedirect()返回null

我通过CDI注释更改导入它仍然不起作用(javax.enterprise.context.SessionScoped),与JSF注释相同(javax.faces.bean.ManagedBean@ManagedProperty).

谢谢.

PD:对不起我的英文!

java dependency-injection javabeans cdi jsf-2

5
推荐指数
2
解决办法
2万
查看次数

如果用户未登录JSF,则重定向到“登录”页面

我正在开发一个JSF应用程序。仅适用于授权用户。

因此,每当有人尝试通过URL访问任何页面时,都应重定向到Login。

我正在使用XHTML作为前端。并使用JSF框架。

我将Session Bean存储在Login Bean中。

不幸的是,我使用了Servlet和静态页面“ response.sendRedirect()”。

提前致谢。

我认为一种解决方案是将所有页面都放在WEB-INF中,但是一个问题是我正在使用resonse.sendRedirect(),而且我正在使用带有facelets的模板。

请给我建议。


文件夹中的“我的登录”页面

"/Common/Login.xhtml" 和一些页面

"/Admin/*.xhtml"
Run Code Online (Sandbox Code Playgroud)

和一些页面

`"Employee/*.ahtml"` 
Run Code Online (Sandbox Code Playgroud)

如何为这2个文件夹Admin和Employee设置筛选器

我给了像这样,但要求不要加入Filter Servlet

<filter-mapping>    
     <filter-name>LoginFilter</filter-name>   
      <url-pattern>/faces/Admin/*</url-pattern>    
     <url-pattern>/faces/Employee/*</url-pattern>           
<dispatcher>REQUEST</dispatcher>
       <dispatcher>FORWARD</dispatcher>  
   </filter-mapping>` 
Run Code Online (Sandbox Code Playgroud)

如果我这样给

 <url-pattern>/*</url-pattern>
Run Code Online (Sandbox Code Playgroud)

它会进入无限循环,请为此问题提供解决方案

jsf redirect login

3
推荐指数
1
解决办法
7158
查看次数

异常发生时的JSF响应代码

在我的JSF应用程序中,我java.lang.SecurityException在用户未登录时抛出一个.在web.xml我重定向到login.jsf一个SecurityExceptionocurrs时.

现在我的问题是,当我查看服务器响应时,它是一个500 - Internal Server Error.我可以以某种方式抛出SecurityException并说它应该是一个401

谢谢

jsf jsf-2

2
推荐指数
1
解决办法
895
查看次数