Spring Security进行登录认证和授权

这篇具有很好参考价值的文章主要介绍了Spring Security进行登录认证和授权。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Spring Security内部认证流程

  1. 用户首次登录提交用户名和密码后spring security 的UsernamePasswordAuthenticationFilter把用户名密码封装Authentication对象

  2. 然后内部调用ProvideManagerauthenticate方法进行认证,然后ProvideManager进一步通过内部调用DaoAuthencationPrioviderauthenticate方法进行认证

  3. DaoAuthencationPriovider通过调用UserDetailsService的实现类InMemoryDetialManagerloadUserByUsername方法查询用户,并把查询到的用户信息封装成一个UserDetails对象。注意InMemoryDetialManage是从内存中查询用户信息的,所以我们要定制化实现UserDetailsService接口来达到从数据库查询用户信息。

  4. 通过PasswordEncode对比返回的UserDetails对象的密码和Authentication对象的密码是否一致,如果密码正确就把UserDetails中的权限信息设置到Authentication对象中

  5. 如果成功返回Authentication对象就使用SecurityContextHolder.getContext().setAuthentication方法存储改对象,然后其他过滤器就会通过SecurityContextHolder来获取当前用户信息。

spring security认证和授权流程,spring,java,spring boot

二、自定义认证流程

我们要定制化实现UserDetailsService接口来达到从数据库查询用户信息,所以重新写一个UserDetailsServiceImpl实现类。然后认证通过使用用户id生成一个jwt(也就是token),然后用userId 作为key,用户信息作为value存入redis中。用户第一次登陆认证流程如下图。

spring security认证和授权流程,spring,java,spring boot
导入依赖

  <!--SpringSecurity启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <!--redis依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--fastjson依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <!--jwt依赖-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
        </dependency>

UserDetailsServiceImpl代码文章来源地址https://www.toymoban.com/news/detail-673119.html

@Service
public class UserDetailServiceImpl implements UserDetailsService {
   

    @Resource
    private UserMapper userMapper;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
   

        //根据用户名查询用户信息
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getUserName,username);
        User user 

到了这里,关于Spring Security进行登录认证和授权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Security 如何实现身份认证和授权?

    Spring Security 如何实现身份认证和授权?

    Spring Security 是一个开源的安全框架,提供了基于权限的访问控制、身份认证、安全性事件发布等功能。在 Spring Boot 应用中使用 Spring Security 可以非常方便地实现用户身份认证和授权。 Spring Security 实现身份认证的主要方式是使用认证过滤器链,该过滤器链包含多个过滤器,用

    2024年02月06日
    浏览(10)
  • 权限管理详解:认证、授权及Spring Security配置解析

    权限管理详解:认证、授权及Spring Security配置解析

    深入探讨权限管理的重要性与实现方式,包括认证、授权概念,基于角色和资源的访问控制方案,以及Spring Security框架的概述和快速入门指南。

    2023年04月10日
    浏览(7)
  • 系列六、Spring Security中的认证 & 授权 & 角色继承

    系列六、Spring Security中的认证 & 授权 & 角色继承

            关于Spring Security中的授权,请参考【系列一、认证 授权】,这里不再赘述。 1.4.1、admin登录 (一) 登录 (二) 访问sayHi(登录就可以访问) (三)访问/admin/helloWorld接口(需要拥有admin角色)  (四)访问/dba/helloWorld接口(需要拥有dba角色,admin自动继承dba角色)

    2024年02月01日
    浏览(15)
  • 后端进阶之路——综述Spring Security认证,授权(一)

    后端进阶之路——综述Spring Security认证,授权(一)

    「作者主页」 :雪碧有白泡泡 「个人网站」 :雪碧的个人网站 「推荐专栏」 : ★ java一站式服务 ★ ★ 前端炫酷代码分享 ★ ★ uniapp-从构建到提升 ★ ★ 从0到英雄,vue成神之路 ★ ★ 解决算法,一个专栏就够了 ★ ★ 架构咱们从0说 ★ ★ 数据流通的精妙之道★ ★后端进

    2024年02月14日
    浏览(8)
  • Spring Security—OAuth2 客户端认证和授权

    关于 JWT Bearer 客户端认证的进一步详情,请参考OAuth 2.0客户端认证和授权许可的 JSON Web Token (JWT)简介。 JWT Bearer 客户端认证的默认实现是  NimbusJwtClientAuthenticationParametersConverter ,它是一个  Converter ,通过在  client_assertion  参数中添加签名的JSON Web Token(JWS)来定制令牌请求

    2024年02月08日
    浏览(12)
  • 搭建spring security oauth2认证授权服务器

    搭建spring security oauth2认证授权服务器

    下面是在spring security项目的基础上搭建spring security oauth2认证授权服务器 spring security oauth2认证授权服务器主要需要以下依赖 Spring Security对OAuth2默认可访问端点 ​/oauth/authorize​ ​​:申请授权码code,涉及类​ ​AuthorizationEndpoint​ ​ ​/oauth/token​ ​​:获取令牌token,涉及类​

    2024年01月21日
    浏览(10)
  • Springboot +spring security,自定义认证和授权异常处理器

    在Spring Security中异常分为两种: AuthenticationException 认证异常 AccessDeniedException 权限异常 我们先给大家演示下如何自定义异常处理器,然后再结合源码帮助大家进行分析 如何创建一个SpringSecurity项目,前面文章已经有说明了,这里就不重复写了。 3.1配置SecurityConfig 这里主要是

    2024年02月07日
    浏览(11)
  • 系列四、Spring Security中的认证 & 授权(前后端不分离)

    系列四、Spring Security中的认证 & 授权(前后端不分离)

    1.3.1、概述         前后端不分离的登录成功回调有两个关键方法,即:defaultSuccessUrl 和 successForwardUrl。那么它们之间的区别是什么呢?        (1)successForwardUrl 表示不管你是从哪里来的,登录后一律跳转到 successForwardUrl 指定的地址。例如 successForwardUrl 指定的地址为/l

    2024年01月19日
    浏览(11)
  • 系列八、Spring Security中基于Mybatis Plus的用户认证 & 授权

           【上篇】文章介绍了基于Jdbc的用户认证 授权,虽然实现了在数据库中认证和授权的逻辑,但是底层都是Spring Security底层帮我们定义好的,扩展性不强,企业开发中,常用的持久化方案是MyBatis Plus,那么Spring Security中如何定义基于MyBatis Plus的方式进行认证授权呢?请看

    2024年01月18日
    浏览(9)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包