spring security 2.0.7 和 spring 2.5 的登录表单问题

2024-01-18

您好,我正在尝试在我的应用程序上放置一个登录页面。 我的login.jsp是

    <form name='f' action="<c:url value='j_spring_security_check' />"
        method='POST'>

        <table>
            <tr>
                <td>User:</td>
                <td><input type='text' name='j_username' value=''>
                </td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><input type='password' name='j_password' />
                </td>
            </tr>
            <tr>
                <td colspan='2'><input name="submit" type="submit"
                    value="submit" />
                </td>
            </tr>
            <tr>
                <td colspan='2'><input name="reset" type="reset" />
                </td>
            </tr>
        </table>

    </form>
</body>
</html>

登录控制器

@控制器 公共类登录控制器{

 @RequestMapping("/user/login.do")
    public ModelAndView handleLoginForm(HttpServletRequest request) {
        String errParam = request.getParameter("error");
        ModelAndView mv = new ModelAndView("login");
        if(errParam != null) {
            mv.addObject("error", "Benutzer oder Kennwort unzul&auml;ssig");
        }
        return mv;
    }

}

弹簧安全XML

    <http auto-config="true">
        <intercept-url pattern="/login"
            access="ROLE_USER" />
        <intercept-url pattern="/j_spring_security_check"
            access="ROLE_USER" />
        <form-login login-page="/login"
            login-processing-url="/j_spring_security_check" default-target-url="/userPage.do"
            authentication-failure-url="/login?error=1" />
        <logout logout-success-url="/login"
            logout-url="/logout" />
    <!--    <intercept-url pattern="/user/userPage.do" access="ROLE_USER" />
        <form-login login-page="/user/login.do" default-target-url="/user/userPage.do"
            authentication-failure-url="/loginfailed" />
        <logout logout-success-url="/logout" />  -->
    </http>


   <authentication-provider>
                <user-service id="userDetailsService">
                        <user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" />
                        <user name="username" password="password" authorities="ROLE_USER" />
                        <user name="test" password="test" authorities="ROLE_USER" />
                </user-service>
   </authentication-provider>

</beans:beans>

弹簧XML

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>


    <bean id="userFormValidator" class="com.validator.UserFormValidator"/>

    <bean id="userProxy"
        class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="target" ref="userManager" />
        <property name="interceptorNames">
            <list>
                <value>transactionInterceptor</value>
            </list>
        </property>
   </bean>

    <bean id="genderManager" class="com.service.impl.GenderManagerImpl">
    </bean>

    <bean id="userProxyBean" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
          <value>com.service.UserManager</value>
        </property> 
        <property name="target">
          <ref bean="userManager" />
        </property>
        <property name="interceptorNames">
          <list>
            <value>loggerAdviser</value>
          </list>
        </property>
    </bean>

    <bean id="genderProxyBean" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
          <value>com.service.GenderManager</value>
        </property> 
        <property name="target">
          <ref bean="genderManager" />
        </property>
        <property name="interceptorNames">
          <list>
            <value>loggerAdviser</value>
          </list>
        </property>
    </bean>

    <bean id="loggerAdviser"  class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
      <property name="advice">
         <ref bean="loggingInterceptor"/>
      </property>
      <property name="patterns">
         <value>.*</value>
      </property>
    </bean> 

    <bean id="loggingInterceptor"  class="com.log.LoggingInterceptor"/>

    <bean id="userDetailController" class="com.web.UserDetailController">
      <property name="userManager"><ref bean="userProxyBean"/></property>
    </bean>  

    <bean id="loginController" class="com.web.LoginController">

    </bean>  

    <bean id="userController" class="com.web.UserController">
      <property name="sessionForm"><value>true</value></property>        
      <property name="commandName"><value>userBean</value></property> 
      <property name="commandClass"><value>com.beans.UserBean</value></property>   
      <property name="validator"><ref bean="userFormValidator"/></property>
      <property name="formView"><value>userForm</value></property>
      <property name="successView"><value>userDetail.do</value></property>
      <property name="userManager"><ref bean="userProxyBean"/></property>
      <property name="genderManager"><ref bean="genderProxyBean"/></property>
    </bean>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
      <property name="urlMap">
         <map>
            <entry key="/user/userPage.do"><ref bean="userController"/></entry>
            <entry key="/user/userDetail.do"><ref bean="userDetailController"/></entry> 
            <entry key="/user/login.do"><ref bean="loginController"/></entry> 
         </map>
      </property>
    </bean>

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property>
        <property name="prefix"><value>/WEB-INF/jsp/</value></property>
        <property name="suffix"><value>.jsp</value></property>
    </bean>

</beans>

web.xml

    <servlet>
        <servlet-name>context</servlet-name>
        <servlet-class>
            org.springframework.web.context.ContextLoaderServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- Spring context loading ends-->
    <servlet>
        <servlet-name>user</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>user</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <servlet>
       <servlet-name>dwr-invoker</servlet-name>
       <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
       <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>

    <taglib>
        <taglib-uri>/spring</taglib-uri>
        <taglib-location>/WEB-INF/spring.tld</taglib-location>
    </taglib>

    <!-- Spring Security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

   </web-app>

现在每当我击中http://localhost:8080/springhibernate/user/login.do http://localhost:8080/springhibernate/user/login.do它显示了登录页面,但是当单击登录时它总是给我错误

请求的资源(/springhibernate/user/j_spring_security_check)不可用。 页面被重定向到http://localhost:8080/springhibernate/user/j_spring_security_check http://localhost:8080/springhibernate/user/j_spring_security_check

请帮助我解决这个问题,并建议我如何在我的应用程序中实现此登录功能,我一直坚持下去


我有一个单独的登录表单几乎相同的设置,但在登录操作时调用以下方法:

(见编辑)

不太确定它是如何工作的,但似乎是必要的:http://ocpsoft.com/java/jsf-java/spring-security-what-happens-after-you-log-in/ http://ocpsoft.com/java/jsf-java/spring-security-what-happens-after-you-log-in/

EDIT:

my form:

<h:form id="loginForm" prependId="false">
        <label for="j_username"><h:outputText value="Username:" /><br />
        </label>
        <h:inputText id="j_username" required="true">
        </h:inputText>

        <br />
        <br />
        <label for="j_password"><h:outputText value="Password:" /><br />
        </label>
        <h:inputSecret id="j_password" required="true">
        </h:inputSecret>

        <br />
        <br />
        <label for="_spring_security_remember_me"> <h:outputText
                value="Remember me" /> </label>
        <h:selectBooleanCheckbox id="_spring_security_remember_me" />
        <br />

        <h:commandButton type="submit" id="login"
            action="#{loginBean.doLogin}" value="Login" />

    </h:form>

登录豆:

@SessionScope
public class LoginBean implements Serializable
{  
    private String j_username;        
    private String j_password;        
    private String _spring_security_remember_me;        

    public String getJ_username() {
        return j_username;
    }    
    public void setJ_username(String j_username) {
        this.j_username = j_username;
    }    
    public String getJ_password() {
        return j_password;
    }    
    public void setJ_password(String j_password) {
        this.j_password = j_password;
    }    
    public String get_spring_security_remember_me() {
        return _spring_security_remember_me;
    }    
    public void set_spring_security_remember_me(String _spring_security_remember_me) {
        this._spring_security_remember_me = _spring_security_remember_me;
    }       

    // This is the action method called when the user clicks the "login" button
    public String doLogin() throws IOException, ServletException
    {
        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();

        RequestDispatcher dispatcher = ((ServletRequest) context.getRequest())
                 .getRequestDispatcher("/j_spring_security_check");

        dispatcher.forward((ServletRequest) context.getRequest(),
                (ServletResponse) context.getResponse());

        FacesContext.getCurrentInstance().responseComplete();
        // It's OK to return null here because Faces is just going to exit.
        return null;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring security 2.0.7 和 spring 2.5 的登录表单问题 的相关文章

随机推荐

  • 在我的 Xampp 本地主机中哪里可以找到 .htaccess 文件

    我这里有一个简单的问题 我是使用 php 和 apache 的初学者 实际上我想修改 htaccess 中的一些配置 但我找不到 任何人都可以告诉我它位于哪里 TIA htaccess设置目录特定设置 它可以进入每个网络目录根据需要更改设置
  • 我真的应该删除 ValueEventListener 吗?

    DatabaseReference Ref FirebaseDatabase getInstance getReference Constants Client path Ref keepSynced true Ref addValueEv
  • 在 asp.net 中使用 SAML2.0 进行 SSO

    我的要求是在asp net中使用SAML2 0实现SSO 我这边确实有 2 个供应商 想要将用户从一个站点传递到另一站点而不登录第二个站点 我以前从未使用过SAML2 0 谁能帮我看看我该如何完成它 首先让我们区分协议和令牌格式 我假设您正
  • 在模态框中打开网页?

    这可能吗 不仅是 html 还有不同的样式表等 同时遮蔽屏幕的其余部分 谢谢你的帮助 Ann 查看Colorbox http colorpowered com colorbox Demo http colorpowered com colo
  • 从 Dart 中的 JavaScript 对象获取任意属性

    Edit 这是一个说明我的问题的最小项目 https github com ahirschberg dart js interop toy您可以通过将其提供给浏览器来查看所描述的错误 pub get然后要么pub serve 飞镖 或pub
  • mysql 按字母顺序排列

    我正在尝试按字母顺序对 mysql 数据进行排序 一个 乙 C D 当我点击 B 时 此查询运行 按 b 从用户顺序中选择名称 但结果显示以 a 或 c 或 d 开头的所有记录 我想显示仅以 b 开头的记录 感谢帮助 我想显示仅以 b 开头
  • “git revert”中的“他们”和“我们”是谁?

    我无法理解谁us and them在这些冲突中git revert 所以我真的不知道这里发生了什么 git revert some commit hash Then git status显示以下冲突 deleted by them path
  • 编写编译器……什么是对的,什么是错的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用干净或自定义配置文件启动 VSC

    通常 VSC 将设置和用户数据存储在 appdata Code 以及扩展名 userprofile vscode 有没有办法告诉新实例加载其他一些配置文件或从 空白画布 开始 就像您可以使用 Firefox 一样 no remote pro
  • 使用 SFML 使自定义类型可绘制

    我最近开始使用 SFML 我决定作为一种学习经验 我将使用它制作一个 pong 克隆 我定义了一个名为Ball绘制使用 SFML 绘制RectangleShape 当我尝试使用以下命令将这个自定义类型绘制到屏幕上时window draw 但
  • Rust 基准测试已优化

    我正在尝试对从 Rust 哈希映射中获取密钥进行基准测试 我有以下基准 bench fn rust get b mut Bencher let hash keys get random hash
  • Qt 去除边距

    我目前正在使用 QMainWindow 小部件 我想删除内部小部件周围的边距 我成功删除了窗口边框的边距 但没有删除窗口内小部件的边距 这是我的代码 例如 this gt mainWidget new QWidget this this g
  • 如何使用Javascript切片提取字符串的第一个和最后一个字母?

    如何使用 JavaScriptslice提取字符串的第一个和最后一个字母 Eg Hello World 我需要的结果是 dH 以下是我的 jsfiddle http jsfiddle net vSAs8 http jsfiddle net
  • log4net AdoNetAppender 截断消息文本

    我遇到一个问题 无论我做什么 我的消息字段都会被截断为大约 42k 这是一个简短的片段来说明我的配置
  • R - 匹配不同长度矩阵的行和列

    我现在的问题如下 我有一个有向 1 模式边缘列表 代表在某一年参与联合项目的演员对 可能如下所示 projektleader projectpartner year A B 2005 A C 2000 B A 2002 现在我只需要某一特定
  • 如何将 UITextField 中用作 leftView 的 UILabel 与 textField 的文本垂直对齐?

    我正在使用一个UILabel as the leftView of a UITextField 问题是文本字段的文本高于标签的文本 这是我到目前为止使用过的代码 UILabel startsWith UILabel alloc init s
  • React-Navigation:使用/更改带有 Redux 状态的标题标题

    是否可以访问 React Navigation 的标题标题中的整个 Redux 状态 The 官方文档 https reactnavigation org docs intro headers表示导航对应的状态是可访问的 static na
  • 交叉编译中的CMake CMAKE_AUTOMOC

    我有以下问题 我尝试使用 CMake 中构建的本机机制进行交叉编译 我准备了以下 toolchain cmake 文件 set CMAKE SYSTEM NAME Linux set CMAKE SYSTEM PROCESSOR arm s
  • 具有复选框行为的自定义列表视图,如 Gmail 应用程序

    我在这里阅读了很多有关列表视图和复选框的帖子 他们中的很多人都使用 CheckedTextView 或扩展它 我想实现一个带有复选框行为的自定义列表视图 就像在 android 邮件应用程序 Gingerbread ICS 上一样 只有复选
  • spring security 2.0.7 和 spring 2.5 的登录表单问题

    您好 我正在尝试在我的应用程序上放置一个登录页面 我的login jsp是