- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Spring Security 表单登录功能的实现方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
1.简介 。
本文将重点介绍使用 Spring Security 登录。 本文将构建在之前简单的 Spring MVC示例 之上,因为这是设置Web应用程序和登录机制的必不可少的.
2. Maven 依赖 。
要将Maven依赖项添加到项目中,请参阅Spring Security with Maven 一文。 标准的 spring-security-web 和 spring-security-config 都是必需的.
3. Spring Security Java配置 。
我们首先创建一个扩展 WebSecurityConfigurerAdapter 的 Spring Security 配置类。 通过添加 @EnableWebSecurity ,我们获得了Spring Security和MVC集成支持:
在此示例中,我们使用内存身份验证并定义了3个用户.
现在来看看我们用来创建表单登录配置的元素.
3.1. authorizeRequests() 。
我们允许匿名访问*/login*,以便用户可以进行身份验证,同时也是保护其他请求。请注意,*antMatchers()*元素的顺序很重要 - 首先需要填写具体的路径规则,然后是才是大致匹配的规则.
3.2. formLogin() 。
这有几种方法可以用来配置表单登录的行为:
loginPage() – 自定义登录页面 loginProcessingUrl() – 提交username和password的URL defaultSuccessUrl() – 登录成功后跳转的URL failureUrl() – 登录失败后跳转的URL 。
3.3. Authentication Manager 。
身份验证提供程序由一个简单的内存实现支持 - InMemoryUserDetailsManager 。 当尚不需要完整的持久性机制时,这对于进行快速原型设计很有用.
从Spring 5开始,我们还必须定义密码编码器。 在我们的例子中,我们使用了 BCryptPasswordEncoder .
4. 添加Spring Security到Web应用 。
要使用上面定义的Spring Security配置,我们需要将其添加到Web应用程序。 在这种情况下,我们不需要任何 web.xml :
注意,如果我们使用Spring Boot应用程序,则不需要此初始化程序。 有关如何在Spring Boot中加载安全性配置的更多详细信息,详情参阅 Spring Boot security auto-configuration 。
5. Spring Security XML配置 。
我们来看看相应的XML配置。整个项目使用Java配置,因此我们需要通过Java @Configuration 类导入XML配置文件:
以及Spring Security 的XML配置– webSecurityConfig.xml
6. web.xml 。
在引入Spring 4之前,我们曾经在 web.xml 中配置Spring Security - 只有一个额外的过滤器添加到 Spring MVC 的web.xml中:
过滤器 - DelegatingFilterProxy - 简单地委托给一个Spring管理的bean - FilterChainProxy-它本身可以从完整的Spring bean生命周期管理中受益.
7. Login Form 。
登录表单页面使用简单的机制将视图名称映射到URL 向Spring MVC注册,且无需编写Controller:
registry.addViewController("/login.html"),
对应于 login.jsp :
Spring Login form包含以下相关组件:
login - 接受表单POST的URL,触发身份验证过程 username - 用户名 password - 密码 。
8.进一步配置Spring登录 。
当我们在上面介绍Spring安全配置时,我们简要讨论了一些登录机制的配置 - 现在详细介绍一下.
覆盖Spring Security中大多数默认值的一个原因是隐藏应用程序受Spring Security保护的事实,并最大限度地减少潜在攻击者对应用程序的了解.
完全配置后,login元素如下所示:
或者相应的XML配置:
8.1. 登录页 。
接下来,让我们看看如何使用*loginPage()*方法配置自定义登录页面:
http.formLogin() .loginPage("/login.html") 。
或者,使用XML配置:
login-page='/login.html' 。
如果我们不指定这个,Spring Security将在*/login*上生成一个非常基本的登录表单.
8.2. 登录的POST URL 。
触发身份验证默认的URL是*/login*,我们可以使用 loginProcessingUrl 方法来覆盖此URL:
或者,使用XML配置
login-processing-url="/perform_login" 。
覆盖此默认URL的一个很好的理由是:隐藏应用程序受 Spring Security 保护的事实 - 该信息不应在外部提供.
8.3. 登录成功页面 。
成功登录过程后,用户将被重定向到页面 - 默认情况下,该页面是Web应用程序的根目录.
我们可以通过*defaultSuccessUrl()*方法覆盖它:
或者,使用XML配置:
default-target-url="/homepage.html" 。
如果 always-use-default-target 设置为 true ,则用户始终会重定向到此页面。 如果该属性设置为 false ,则在提示进行身份验证之前,用户将被重定向到他们想要访问的上一页.
8.4. 登录失败页面 。
与登录页面相同,默认情况下, Spring Security 会在*/login?error*自动生成登录失败页面.
要覆盖它,我们可以使用*failureUrl()*方法:
或者XML
authentication-failure-url="/login.html?error=true" 。
9. 结论 。
在这个Spring登录示例中,我们配置了一个简单的身份验证过程 - 我们讨论了Spring安全登录表单,安全配置和一些可用的更高级的自定义.
这个Spring登录教程的实现可以在GitHub 项目中找到 - 这是一个基于Eclipse的项目,所以它应该很容易导入和运行.
当项目在本地运行时,可以在以下位置访问示例HTML:
http://localhost:8080/spring-security-mvc-login/login.html 。
总结 。
以上所述是小编给大家介绍的Spring Security 表单登录功能的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢! 。
最后此篇关于Spring Security 表单登录功能的实现方法的文章就讲到这里了,如果你想了解更多关于Spring Security 表单登录功能的实现方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
请帮助我的建议。 我需要通过 xml 文件中的某个变量在我的应用程序上禁用/启用 spring 安全性。 我的 spring-security.xml 文件
我做了很多研究,对我来说一切看起来都是正确的......但我无法让它发挥作用!有人有什么想法吗? 无论我做什么,相关映射仍然对任何人公开(匿名或登录,无论他们具有什么角色)。 理想情况下,我希望所有请
我们正在考虑为我们网站的一部分启用 SSL,但某些页面包含来自第三方供应商(如 Google AdSense)的广告。 我认为这会给我们的用户带来一个恼人的问题,因为他们在查看带有广告的页面时会看到类
我正在开发一个休息服务,它将通过浏览器提供 浏览器单页应用程序和移动应用程序。目前我的服务正在运行 根本没有 Spring 。 oauth2 客户端是在过滤器内部实现的,所以可以说是“手动”。 我正在
我正在为我公司的网站添加 Content-Security-Policy-Report-Only 标题。在我研究它时,我发现一些页面已经设置了 Content-Security-Policy head
在 XML 配置中,我可以使用 security 命名空间来启用对安全性的支持,例如: 我尝试使用没有 XML 的 Spring,只有 @Configuration 类。与上述 XM
我正在使用 Spring Security 3.0.2,但找不到从数据库加载匿名用户角色的方法(我有动态角色,可以将角色分配给每个人)。 我尝试使用自定义的anonymousAuthenticatio
我有那个代码。但是当我在浏览器中进入 app_dev.php/login浏览器说:该页面进行了太多重定向 安全.yml安全: 编码器: Symfony\Component\Security\Core\
我正在使用SSH Secure Shell客户端,这是一个连接服务器的好工具。 但是,我想知道是否可以记录通过SSH Secure Shell客户端运行的程序中所有即将出现的消息。例如:./ test
我有那个代码。但是当我在浏览器中进入 app_dev.php/login浏览器说:该页面进行了太多重定向 安全.yml安全: 编码器: Symfony\Component\Security\Core\
如何为表单例份验证提供程序设置 success_handler(和 failure_handler)? Silex 使用此配置忽略我: register(new Silex\Provider\Secu
新手问题...我已成功实现自定义处理程序和服务(自定义用户详细信息服务、身份验证成功、身份验证失败)并且一切正常。我现在还实现了如果 3 次并发身份验证失败将锁定帐户(一定时间)的功能。 我现在继续处
我正在使用 Spring security java 配置,我想知道一种实现多个 url 注销的方法。即 logout().logoutRequestMatcher(new AntPathReques
我正在为我的 SP 使用 Spring Security SAML 扩展。用户通过 IDP 身份验证后,SP 使用某种方法允许后续调用不必通过 IDP 重新进行身份验证。这是如何在 Spring Se
spring security 有没有办法防止下面的最后一点?我正在使用 3.0.5 - 用户登录我的网站 - 用户转到网站中的任何页面并单击注销 -注销链接使用户 session 无效并将它们发送到
要么我迟到了,要么我做错了什么。我正在使用 Visual Studio 2013,但是我试图使用 Membership 类,using System.Web.Security;我的程序集中不存在命名空
我有一个具有依赖性的oauth2客户端spring-boot应用程序: - Spring 靴1.2.0.RC1 -spring-security-oauth2 2.0.4.RELEASE - Spri
我想在控制台应用程序中生成 HashPasswordForStoringInConfigFile。 它是在 Web 应用程序中使用以下类完成的 System.Web.Security.FormsAut
我需要有多个 PRE_AUTH Spring 安全过滤器。特别是我需要使用 PRE_AUTH除了配置为 PRE_AUTH 的两个过滤器之外的过滤器在 Spring Security 3.0 的 SAM
我猜这里没有答案,但我想知道是否有办法创建这样的自定义注释: @Documented @Inherited @Retention(RetentionPolicy.RUNTIME) @Target({E
我是一名优秀的程序员,十分优秀!