RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
详解SpringSecurity的formLogin登录认证模式-创新互联

详解Spring Security的formLogin登录认证模式

公司主营业务:成都网站设计、成都网站制作、外贸网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出林芝免费做网站回馈大家。

一、formLogin的应用场景

在本专栏之前的文章中,已经给大家介绍过Spring Security的HttpBasic模式,该模式比较简单,只是进行了通过携带Http的Header进行简单的登录验证,而且没有定制的登录页面,所以使用场景比较窄。

对于一个完整的应用系统,与登录验证相关的页面都是高度定制化的,非常美观而且提供多种登录方式。这就需要Spring Security支持我们自己定制登录页面,也就是本文给大家介绍的formLogin模式登录认证模式。

准备工作

  • 新建一个Spring Boot 的web应用,引入Spring Security Starter。
  • 准备一个login.html登录页面,页面内容非常简单,一个from表单、用户名和密码输入框,一个提交按钮
  • 准备一个首页index.html,在登录成功之后需要进入index.html首页
  • 首页可以看到syslog(日志管理)、sysuer(用户管理)、biz1(业务一)、biz2(业务二)四个页面超文本链接选项。通过controller控制层跳转页面,并在对应页面写一些标志性文字即可,不需写具体业务。

需求

  • 我们希望biz1(业务一)、biz2(业务二)普通的操作用户user就可以访问
  • 我们希望管理员可以访问包括syslog(日志管理)和sysuser(用户管理)在内的所有资源

以上就是本文介绍formLogin模式需要进行的准备工作及需求,下面我们就来实现其中的核心的登录验证逻辑,准备工作非常简单请自行实现。(新建spring boot应用,登录页面、首页、四个业务页面都写成非常简单的html即可,不用写实际业务和样式。)

二、说明

formLogin模式的三要素:

  • 登录验证逻辑
  • 资源访问控制规则,如:资源权限、角色权限
  • 用户信息

一般来说,使用权限认证框架的的业务系统登录验证逻辑是固定的,而资源访问控制规则和用户信息是从数据库或其他存储介质灵活加载的。但本文所有的用户、资源、权限信息都是代码配置写死的,旨在为大家介绍formLogin认证模式,如何从数据库加载权限认证相关信息我还会结合RBAC权限模型再写文章的。

三、实现formLogin模式基础配置

首先,我们要继承WebSecurityConfigurerAdapter ,重写configure(HttpSecurity http) 方法,该方法用来配置登录验证逻辑。请注意看下文代码中的注释信息。

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable() //禁用跨站csrf攻击防御,后面的章节会专门讲解
      .formLogin()
        .loginPage("/login.html")//用户未登录时,访问任何资源都转跳到该路径,即登录页面
        .loginProcessingUrl("/login")//登录表单form中action的地址,也就是处理认证请求的路径
        .usernameParameter("uname")///登录表单form中用户名输入框input的name名,不修改的话默认是username
        .passwordParameter("pword")//form中密码输入框input的name名,不修改的话默认是password
        .defaultSuccessUrl("/index")//登录认证成功后默认转跳的路径
        .and()
      .authorizeRequests()
        .antMatchers("/login.html","/login").permitAll()//不需要通过登录验证就可以被访问的资源路径
        .antMatchers("/biz1").hasAnyAuthority("biz1") //前面是资源的访问路径、后面是资源的名称或者叫资源ID
        .antMatchers("/biz2").hasAnyAuthority("biz2")
        .antMatchers("/syslog").hasAnyAuthority("syslog")
        .antMatchers("/sysuser").hasAnyAuthority("sysuser")
        .anyRequest().authenticated();
  }
}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:详解SpringSecurity的formLogin登录认证模式-创新互联
文章网址:http://lswzjz.com/article/dijoie.html