SpringSecurity入门demo(三)多用户身份认证

这篇具有很好参考价值的文章主要介绍了SpringSecurity入门demo(三)多用户身份认证。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

WebSecurityConfigurerAdapter配置文件在
configure(AuthenticationManagerBuilder auth)

方法中完成身份认证。前面的demo都只有一个用户,security中使用UserDetailsService做为用户数据源 ,所以可以实现UserDetailsService 接口来自定义用户。实现方法可以有几下几种:

1)内容用户

2)JDBC读取

3)自定义UserDetailsService

4)自定义AuthenticationProvider

一、使用内存用户验证InMemoryUserDetailsManager 

1、代码改动:

package com.security.demo.config;

import org.springframework.security.crypto.password.PasswordEncoder;

public class MyPasswordEncoder implements PasswordEncoder {
    @Override
    public String encode(CharSequence charSequence) {
        return charSequence.toString();
    }

    @Override
    public boolean matches(CharSequence charSequence, String s) {
        return s.equals(charSequence.toString());
    }
}

 配置类中configure(AuthenticationManagerBuilder auth)方法覆盖身份认证:

//身份认证
@Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        //可以设置内存指定的登录的账号密码,指定角色;不加.passwordEncoder(new MyPasswordEncoder())就不是以明文的方式进行匹配,会报错:java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"
        auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder()).withUser("admin").password("123").roles("xtgly");
        auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder()).withUser("zs").password("123").roles("userAdmin","roleAdmin");
        auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder()).withUser("ls").password("123").roles("schoolAdmin");
        //加上.passwordEncoder(new MyPasswordEncoder())。页面提交时候,密码以明文的方式进行匹配。
    }

2、测试:重启项目控制台不再输出随机的默认密码,

输入正常的账号密码跳转到目标接口,输入错误的账号密码跳转到登陆错误页面。

二、JDBC方式:

1、代码:

@Autowired
DataSource dataSource;
 
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.jdbcAuthentication()
            .dataSource(dataSource)
            // 下面的方法会运行数据表初始化脚本,前提是你的数据库支持varchar_ignorecase字段类型
            // .withDefaultSchema()
	        //使用自定义sql查询用户信息
	        .usersByUsernameQuery("select username,password,enabled from users " + "where username = ?")
            .withUser("tester")
            .password(passwordEncoder.encode("123456"))
            .authorities("tester")
            .and()
            .withUser("user")
            .password(passwordEncoder.encode("123456"))
            .authorities("tester");
}

三、 自定义UserDetailsService:

四、自定义AuthenticationProvider:这是实际应用中常用的方法。文章来源地址https://www.toymoban.com/news/detail-798656.html

到了这里,关于SpringSecurity入门demo(三)多用户身份认证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Gateway使用JWT实现统一身份认证

    在开发集群式或分布式服务时,鉴权是最重要的一步,为了方便对请求统一鉴权,一般都是会放在网关中进行处理。目前非常流行的一种方案是使用JWT,详细的使用说明,可以找相关的资料查阅,这里先不进行深入的引用了。主要使用它下面的特性: 它的数据使用JSON格式封

    2024年02月12日
    浏览(45)
  • Day17-Node后端身份认证-JWT

    1 MD5加密 创建MD5.js

    2024年02月12日
    浏览(39)
  • 【Node.js】身份认证,Cookie和Session的认证机制,express中使用session认证和JWT认证

    Web开发模式 基于服务器渲染的传统web开发模式 服务端渲染的概念,服务器发送给客户端的HTNL页面,是在服务器通过字符串的拼接,动态生成的,因此,客户端不需要Ajax这样的技术额外请求页面的数据 优点: 前端耗时少,有利于seo(就是爬虫更容易爬取获得信息,更有利于

    2023年04月11日
    浏览(49)
  • Java中JWT技术解析与实践:安全高效的身份认证

    什么是JWT(JSON Web Token)? JWT是一种用于身份验证和授权的开放标准(RFC 7519),它是基于JSON格式的轻量级安全令牌。JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。通常,JWT被用于在不同的系统之间传递安全性的声明信息,以便用户在跨域应用中进行身

    2024年02月05日
    浏览(59)
  • django authenticate--用户身份认证

    authenticate Django的contrib.auth模块中的authenticate()函数用于对用户的凭据进行身份验证,与已配置的身份验证后端进行比较。 当用户尝试登录时,authenticate()函数将使用用户的凭据(即用户名和密码)作为参数进行调用,该函数然后检查可用的身份验证后端以验证凭据,这些后端在

    2024年02月05日
    浏览(59)
  • HTTP——八、确认访问用户身份的认证

    HTTP——一、了解Web及网络基础 HTTP——二、简单的HTTP协议 HTTP——三、HTTP报文内的HTTP信息 HTTP——四、返回结果的HTTP状态码 HTTP——五、与HTTP协作的Web服务器 HTTP——六、HTTP首部 HTTP——七、确保Web安全的HTTPS HTTP——八、确认访问用户身份的认证 HTTP——九、基于HTTP的功能

    2024年02月14日
    浏览(40)
  • 在springBoot中使用JWT实现1.生成token,2.接收前端token进行身份认证,3.通过token获取对象信息

    第一步:引入依赖 第二步:创建工具类 在until包下创建TokenUntil类,用于生成token 利用id,和password作为参数生成token JWt为这个包下的对象 第三步:token使用 在向前端返回的数据对象中添加token属性  是serve层中调用工具类方法将生成的token放到返回的数据中 注意:这里获取到

    2024年02月04日
    浏览(69)
  • 使用Token方式实现用户身份鉴权认证

    Token,也称为“令牌”,是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。比如如下形式: 39faf62271944fe48c4f1d69be71bc9a 传

    2024年02月11日
    浏览(42)
  • 计算机网络的故事——确认访问用户身份的认证

    HTTP使用的认证方式:BASIC认证(基本认证)、DIGEST(摘要认证)、SSL客户端认证、FormBase认证(基于表单认证)。 基于表单的认证:涉及到session管理以及cookie的应用。

    2024年02月09日
    浏览(47)
  • Spring Authorization Server入门 (十三) 实现联合身份认证,集成Github与Gitee的OAuth登录

    什么是联合身份认证?       通过Spring Security OAuth2 Client(Login)模块集成第三方登录至自己的认证服务中,使用联合身份认证只需要请求认证服务,不通过前端来跳转三方的授权申请链接,而是统一通过认证服务来跳转,只需要维护Spring Authorization Server中身份认证提供商

    2024年02月05日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包