相关疑难解决方法(0)

会话到期时的授权重定向不适用于提交JSF表单,页面保持不变

我正在使用JSF2.我已经实现了一个自定义面部servlet,如下所示:

public class MyFacesServletWrapper extends MyFacesServlet {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

其中我正在进行一些授权检查并在用户未登录时发送重定向:

public void service(ServletRequest request, ServletResponse response) {
    HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse res = (HttpServletResponse) response;

    if (...) {
        String loginURL = req.getContextPath() + "/LoginPage.faces";
        res.sendRedirect(loginURL);
    }
}
Run Code Online (Sandbox Code Playgroud)

这在用户尝试导航到另一个页面时有效.但是,当JSF命令链接/按钮提交JSF表单时,这不起作用.该行sendRedirect()线被击中并执行,没有异常被抛出了,但用户停留在同一页面.基本上,根本没有视觉变化.

为什么这适用于页面导航,而不是表单提交?

java jsf redirect authorization jsf-2

8
推荐指数
1
解决办法
9452
查看次数

如何在应用程序上使用新用户登录创建新会话?

一旦新用户登录应用程序,如何在JSF 2.0中创建新会话?

session jsf jsf-2

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

在j_security_check之后执行操作?

我正在做一个记录用户操作的审计系统.我需要记录用户执行登录的时间.我搜索了不同的地方,但我总是遇到同样的解决方案,使用"过滤器".

以上解决方案对我不起作用.没有其他解决方案使用过滤器或进行自定义登录?

我正在使用带有GlassFish 3的Java 7

action login jaas j-security-check java-ee

7
推荐指数
0
解决办法
184
查看次数

以编程方式使用Servlet 3.0控制登录

我已经测试了Glassfish 3.0.1中的默认安全容器,并得出结论,我将不再花费更多时间.相反,我想自己控制验证.但我需要一些指导才能让我走上正轨.

目前我有一个具有登录/注销功能的UserBean(见下文).我不想使用*j_security_check*内置容器,但使用核心JSF 2.0.

我的问题是;

  1. 如果用户未登录(如果访问某些文件夹),是否需要ServletFilter来重定向流量?
  2. 用户成功登录后如何存储用户权限?

感谢任何帮助或链接到一个例子,问候克里斯.

PS.请原谅我将两个问题集中在一起

@ManagedBean
@SessionScoped
public class UserBean {

private AuthenticateUser authenticateUser;
...

public String login() {
    FacesContext context = FacesContext.getCurrentInstance();
    HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();

    JsfUtil.log("Username : " +authenticateUser.getUserName());
    JsfUtil.log("Password : " +authenticateUser.getPassword());
    AuthenticateUser authRequest = authenticationFacade.find(authenticateUser);
    try {
        if(!authRequest.equals(authenticateUser))
            return "/loginError";

        request.login(authenticateUser.getUserName(), authenticateUser.getPassword());
        return "";
    } catch(ServletException e){
       JsfUtil.addErrorMessage(e, "Incorrect username or password, please try again.");
       return "/loginError";
    }

...
public String logOut() {
    String result = "/index?faces-redirect=true";
    FacesContext context = FacesContext.getCurrentInstance(); …
Run Code Online (Sandbox Code Playgroud)

jsf servlets servlet-filters

6
推荐指数
1
解决办法
6801
查看次数

在jsf中启动会话的基本步骤

有谁能告诉我在jsf中创建新会话必须执行的基本步骤?

会话范围是托管bean将真实用户重定向到某个页面创建会话吗?

jsf-2

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

在 JAAS 重定向之前检索请求的 URL

是否可以在 JAAS 重定向之前检索用户请求的 URL?

我的 web.xml 是这样的:

<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/login.jsf</form-login-page>
        <form-error-page>/login.jsf</form-error-page>
    </form-login-config>
</login-config>
Run Code Online (Sandbox Code Playgroud)

所以,当我没有登录并尝试去前。www.blah.com/myApp/users.jsf 然后应用程序将我重定向到login.jsf,但 URL 仍然与用户请求的相同。

然后我填写登录表单并单击登录,这将转到我的 backbean,在那里调用我的 loginModule 和 callbackHandler 例如:

public String actionLogin(){
   //do my login and stuff
   return "page that user requested";
}
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法来获取用户请求的页面。 request.getRequestURL()

都还给我: www.blah.com/myApp/login.jsf

有什么办法可以得到请求的页面? www.blah.com/myApp/users.jsf

问候

java jsf redirect login jaas

5
推荐指数
1
解决办法
2699
查看次数

j_security_check直接调用

我有一个Web应用程序,我希望主页包含一个登录表单,以及其他数据.如果用户选择登录,则应将其重定向到另一个页面(例如login_success.jsp).我的问题是:我可以使用j_security_check机制登录,或者唯一的方法是使用托管bean来处理登录?

我的主页看起来像这样:

....
    <form action="j_security_check" method="POST" name="loginForm">
        <h:panelGrid columns="2">
            <h:outputLabel id="userNameLabel" for="j_username" value="#{label.home_username}:" />
            <h:inputText id="j_username" autocomplete="off" />
            <h:outputLabel id="passwordLabel" for="j_password" value="#{label.home_password}:" />
            <h:inputSecret id="j_password" autocomplete="off" />

            <h:panelGroup>
                <h:commandButton type="submit" value="Login" />
                <h:commandButton type="reset" value="Clear" />
            </h:panelGroup>
        </h:panelGrid>
    </form>
...
Run Code Online (Sandbox Code Playgroud)

如果我按下登录按钮,我得到 - > HTTP状态400 - 对表单登录页面的无效直接引用.很明显,j_security_check机制不知道在哪里"重定向",因为我以前没有请求过受保护的资源.

jsf login j-security-check

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

JSF 2.0上用户身份验证的最佳实践?

我搜索了如何在我的JSF Web项目中进行用户身份验证的最佳方法.我在库存过流中找到了BalusC的这个非常好的例子(顺便说一下,谢谢你BalusC).但我不明白这个系统.

我写了一个注册页面.注册后,用户进入我的数据库.但是谁可以使用j_security_check从我的数据库中检查用户?

在我的webproject中,我没有用户和非用户的站点.当用户进入时,他会看到更多选项,例如他可以发布文本.我可以检查一下吗?我可以在登录时使用userdata保存用户类并检查:

if(user != null){
 <h:inputText value="User Only Text" id="text"  />
}
Run Code Online (Sandbox Code Playgroud)

但我认为这种方式并不是很优雅.另外我的问题是,让用户登录并在网页上显示有效用户的更多选项的最佳方式是什么,而不是非用户.

谢谢,抱歉我的英语不好.

java jsf glassfish

4
推荐指数
1
解决办法
3004
查看次数

使用Primefaces进行j_security_check

如何实现j_security_checkPrimefaces?通常在JSP中如果要使用JAAS进行登录,则登录表单通常为:

<form action="j_security_check" method="POST">
   Username:<input type="text" name="j_username"><br>
   Password:<input type="password" name="j_password">
   <input type="submit" value="Login">
</form>
Run Code Online (Sandbox Code Playgroud)

但是我们如何在JSF或Primefaces中实现它!

  • 这将是什么行动
  • 我们如何摆脱id或名称 formId:componentId
  • 此外p:commandButton,默认情况下,它在Primefaces中被ajaxified,因此它如何以非ajax方式提交表单

我需要使用Primefaces实现JAAS表单身份验证,我在这里分享解决方案; 这对某人来说可能会派上用场.

java authentication jaas primefaces jsf-2

4
推荐指数
1
解决办法
8627
查看次数

WildFly:Java EE应用程序中随机加密的密码

什么是使用存储在数据库中的随机盐渍密码的WildFly(8.2)方法?

是的实现org.jboss.crypto.digest.DigestCallback意味着有机会获得部分盐从数据库(在密码验证过程)?

或者我应该简单地将密码哈希并加密密码,然后再将其交给login方法HttpServletRequest

security salt java-ee-7 wildfly-8

4
推荐指数
1
解决办法
1872
查看次数