网站用什么切版,网站建设内容模板,建站公司塔山双喜,wordpress移动端添加广告1.简介 本文将重点介绍使用Spring Security登录 。 我们将在前面的简单Spring MVC示例的基础上构建#xff0c;因为这是设置Web应用程序和登录机制的必要部分。 2. Maven依赖 要将Maven依赖项添加到项目中#xff0c;请参阅Spring Security with Maven文章 。 标准的spring-… 1.简介 本文将重点介绍使用Spring Security登录 。 我们将在前面的简单Spring MVC示例的基础上构建因为这是设置Web应用程序和登录机制的必要部分。 2. Maven依赖 要将Maven依赖项添加到项目中请参阅Spring Security with Maven文章 。 标准的spring-security-web和spring-security-config都是必需的。 3. web.xml中的Spring Security配置很简单–仅向标准Spring MVC web.xml中添加了一个额外的过滤器 ?xml version1.0 encodingUTF-8?
web-app xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp://java.sun.com/xml/ns/javaee xmlns:webhttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsdxsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd idWebApp_ID version3.0display-nameSpring Secured Application/display-name!-- Spring MVC --servletservlet-namemvc/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classload-on-startup1/load-on-startup/servletservlet-mappingservlet-namemvc/servlet-nameurl-pattern//url-pattern/servlet-mappingcontext-paramparam-namecontextClass/param-nameparam-valueorg.springframework.web.context.support.AnnotationConfigWebApplicationContext/param-value/context-paramcontext-paramparam-namecontextConfigLocation/param-nameparam-valueorg.baeldung.spring.web.config/param-value/context-paramlistenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener!-- Spring Security --filterfilter-namespringSecurityFilterChain/filter-namefilter-classorg.springframework.web.filter.DelegatingFilterProxy/filter-class/filterfilter-mappingfilter-namespringSecurityFilterChain/filter-nameurl-pattern/*/url-pattern/filter-mapping/web-app 过滤器-DelegatingFilterProxy-简单地委派给Spring托管的bean – FilterChainProxy-它本身可以从完整的Spring bean生命周期管理等中受益。 2. Spring Security配置 Spring配置大部分是用Java编写的但是Spring Security配置尚不支持完整的Java并且在大多数情况下仍需要为XML。 目前正在努力为Spring Security添加基于Java的配置 但这还不成熟。 整个项目使用的是Java配置因此需要通过Java Configuration类导入XML配置文件 Configuration
ImportResource({ classpath:webSecurityConfig.xml })
public class SecSecurityConfig {public SecSecurityConfig() {super();}
} Spring Security XML配置– webSecurityConfig.xml ?xml version1.0 encodingUTF-8?
beans:beans xmlnshttp://www.springframework.org/schema/security xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:beanshttp://www.springframework.org/schema/beansxsi:schemaLocationhttp://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp use-expressionstrueintercept-url pattern/login* accessisAnonymous() /intercept-url pattern/** accessisAuthenticated()/form-login login-page/login.html default-target-url/homepage.html authentication-failure-url/login.html?errortrue /logout logout-success-url/login.html //httpauthentication-managerauthentication-provideruser-serviceuser nameuser1 passworduser1Pass authoritiesROLE_USER //user-service/authentication-provider/authentication-manager
/beans:beans 2.1。 intercept-url 我们允许对/ login进行匿名访问以便用户可以进行身份验证。 我们也在确保其他一切。 请注意 intercept-url元素的顺序很重要-首先需要制定更具体的规则然后是更通用的规则。 2.2。 表单登录 登录页面 – 自定义登录页面 default-target-url-成功登录后的登录页面 authentication-failure-url –登录失败后的登录页面 2.3。 身份验证管理器 身份验证提供程序由简单的内存实现特别是InMemoryUserDetailsManager 支持以纯文本配置。 它仅在Spring 3.1及更高版本中存在并且在尚不需要完全持久性机制的情况下可用于快速原型制作。 3.登录表单 登录表单页面将使用简单的机制向Spring MVC注册该机制将视图名称映射到URL 而无需在两者之间使用显式控制器 registry.addViewController(/login.html); 当然这对应于login.jsp html
head/head
bodyh1Login/h1form namef actionj_spring_security_check methodPOSTtabletrtdUser:/tdtdinput typetext namej_username value/td/trtrtdPassword:/tdtdinput typepassword namej_password //td/trtrtdinput namesubmit typesubmit valuesubmit //td/tr/table/form
/body
/html Spring登录表单具有以下相关工件 j_spring_security_check –表单在其中张贴以触发身份验证过程的URL j_username –用户名 j_password –密码 4.进一步配置Spring登录 当我们在上面介绍了Spring Security XML Configuration时我们简要讨论了登录机制的一些配置–现在让我们详细介绍一下。 覆盖Spring Security中大多数默认设置的原因之一是隐藏了应用程序受Spring Security保护的事实并最大程度地减少了潜在的攻击者对应用程序的了解。 完全配置后 form-login元素如下所示 form-login login-page/login.html login-processing-url/perform_login default-target-url/homepage.htmlauthentication-failure-url/login.html?errortrue always-use-default-targettrue/ 4.1。 登录页面 通过登录页面属性o n form-login配置自定义登录页面 login-page/login.html 如果未指定则使用默认URL – spring_security_login –并且Spring Security将在该URL生成一个非常基本的登录表单。 4.2。 登录的POST URL Spring Login将在其上触发触发身份验证过程的默认URL是/ j_spring_security_check 。 可以通过form-login上的login-processing-url属性覆盖此URL login-processing-url/perform_login 覆盖此默认URL的一个很好的理由是隐藏一个事实即该应用程序实际上已通过Spring Security进行了保护-该信息不应在外部使用。 4.3。 成功登录页面 成功的登录过程之后用户将被重定向到页面–默认情况下页面是Web应用程序的根目录。 这可以通过form-login上的default-target-url属性来覆盖 default-target-url/homepage.html 如果always-use-default-target设置为true则始终将用户重定向到此页面。 如果该属性设置为false则在升级用户进行身份验证之前该用户将被重定向到他们要访问的上一页。 4.4。 登陆页面失败 与登录页面相同登录失败页面默认由Spring Security在/ spring_security_loginlogin_error生成。 这可以通过form-login上的authentication-failure-url属性来覆盖 authentication-failure-url/login.html?errortrue5.结论 在这个Spring登录示例中我们配置了一个简单的身份验证过程–我们讨论了Spring Security登录表单Security XML配置以及名称空间中可用的一些更高级的自定义。 可以在github项目中找到此Spring Login教程的实现–这是一个基于Eclipse的项目因此应易于导入和运行。 当项目在本地运行时可以在以下位置访问示例html http// localhost8080 / spring-security-login / login.html 参考 Spring安全表单从我们的JCG合作伙伴 Eugen Paraschiv 登录到baeldung博客。 翻译自: https://www.javacodegeeks.com/2013/05/spring-security-login.html