spring security的使用

正常做项目校验用户和权限都需要经过这几步:

       (1)、校验用户的账号密码,校验失败给用户的提示

       (2)、用户密码校验成功后的操作

       (3)、用户在操作某个方法时校验用户是否有这个方法的权限,如果没有权限给与提示

         security是一个权限校验框架,对以上这些功能都提供了相应的接口,我们只需要实现这些接口即可;

    本文最后链接会有一个demo,使用了mysql、redis,大致逻辑是用户在登录时校验账号密码,校验成功则查询用户拥有的方法权限封装成一个对象放在redis中(键是userId),然后使用jwt对userId加密生成token返回给客户端,用户做其他操作的时候将token传到服务端,服务端解析token获得userId,然后根据userId从redis中获得用户的方法权限,然后检验当前用户访问的方法;

我以下面的项目简单说明一下登录流程:

   首先启动 SanGengTokenDemo,使用postMan等工具访问:http://localhost:8888/user/login

        Security的配置类SecurityConfig,配置一些全局的配置;

        1、 在login方法中将 用户和密码封装成UsernamePasswordAuthenticationToken,然后调用 authenticate 方法 校验用户的账号密码、查询用户的权限封装成 LoginUser,在这一步中我们需要实现 UserDetailsService的 loadUserByUsername 接口 用于 校验账号密码、查询用户权限;

        2、获得用户信息后使用JWT将userId 生成token 返回客户端,并将 loginUser 放入到redis中;

        3、校验用户或账号密码失败的接口 AuthenticationEntryPoint.commence ,我们只需要实现这个方法并在 SecurityConfig 配置,校验失败时就会执行

        4、权限校验失败的接口 AccessDeniedHandler.handle,我们只需要实现这个方法并在 SecurityConfig 配置,用户没有方法权限时就会执行

        5、方法权限的校验

            (1)、security 提供了四种权限校验方法,是在方法上面添加注解实现,参考 HelloController 中的 hello 方法,一般不使用这种方式,一个方法通常要被很多个角色访问,这种配置很繁琐

           (2)、在全局过滤器中 从 loginUser 中获得用户拥有的权限,判断是否包含当前的url;     

根据用户查询用户信息:

校验密码:根据注入的passwordEncoder来进行密码的校验,passwordEncoder是在SecurityConfig中注入的BCryptPasswordEncoder,所以数据库中存储的也是加密后的密码,如:passwordEncoder.encode("1234"),见MapperTest;

 

       

学习视频地址:SpringSecurity框架教程-Spring Security+JWT实现项目级前端分离认证授权-B站最通俗易懂的Spring Security课程_哔哩哔哩_bilibili

下面附件是实现的demo及方法调用:

 

代码链接:https://pan.baidu.com/s/1XzcHKWs7pIcBydLiRlazAA?pwd=ps1r 

数据库脚本:链接:https://pan.baidu.com/s/1RCIM330FsrPbFzyGXB5hqA?pwd=dq9p 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security是一个功能强大的身份验证和访问控制框架,可用于保护基于Spring的应用程序。以下是使用Spring Security的一些基本步骤: 1. 添加Spring Security依赖项:在项目的构建文件中(如Maven的pom.xml或Gradle的build.gradle)添加Spring Security的依赖项。 2. 配置Spring Security:创建一个配置类,继承自`WebSecurityConfigurerAdapter`,并重写`configure`方法来配置认证和授权规则。例如,可以配置用户名和密码、角色授权等。 3. 实现用户认证:可以实现`UserDetailsService`接口来自定义用户认证逻辑,或者使用`AuthenticationProvider`接口来自定义身份验证过程。通过重写相应的方法,可以实现用户认证逻辑,如从数据库中获取用户信息并验证密码。 4. 配置登录页面:通过配置`formLogin`方法来设置登录页面的URL、登录成功后的URL等。 5. 配置访问控制:通过配置`authorizeRequests`方法来设置不同URL路径的访问权限。可以根据角色或其他条件来限制访问某些URL。 6. 配置注销:通过调用`logout`方法来配置注销操作的URL和注销成功后的URL。 7. 启用Spring Security:在启动类上使用`@EnableWebSecurity`注解来启用Spring Security。 这只是一个简单的概述,使用Spring Security还有很多其他的配置和功能,如记住我、CSRF保护、自定义登录页面等。你可以查阅Spring Security的文档以获取更详细的信息和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值