Security案例演示

本文将演示如何在Spring Security中进行自定义配置,包括设置自定义用户名和密码,创建自定义登录页面并实现登录成功及失败后的页面跳转策略。通过自定义AuthenticationSuccessHandler和AuthenticationFailureHandler,我们可以更好地控制用户的登录流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.自定义用户名

/**
 * 流程:
 *     1.客户端发送post请求,认证(登录)
 *     2.客户端携带请求参数:用户名(username)和密码(password)
 *     3.Security直接调用UserDetailsService.loadUserByUsername方法,查询用户。(要求spring容器中必须有此接口的实现对象)
 *     4.如果loadUserByUsername方法抛出异常,则直接提示客户端,用户名或密码错误。
 *     5.如果loadUserByUsername方法返回UserDetails类型的对象,则进入密码校验流程。
 *     6.先使用PasswordEncoder加密请求发送来的密码,再校验请求参数密码和UserDetails中包含的密码是否一致。(要求spring容器必须有PasswordEncoder对象)
 *     7.如果密码校验失败,直接提示客户端,用户名或密码错误
 *     8.如果密码校验成功,进入认证成功后的视图
 */
@Component
public class UserLoginDetailsServiceImpl implements UserDetailsService {
    @Autowired
    private UserService userService;

    public UserLoginDetailsServiceImpl(){
        System.out.println("自定义接口实现类型对象已创建");
    }
    /**
     * 认证方法
     * @param username
     * @return
     * @throws UsernameNotFoundException
     */
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        System.out.println("loadUserByUsername("+username+")方法开始执行");
        //查询用户
        User user = userService.loginUser(username, null);
        System.out.println("查询的用户是:"+user);
        //判断用户是否存在,不存在抛出异常
        if (user==null){
            throw new UsernameNotFoundException(username+"用户不存在");
        }
        //返回security内置的user对象
        return new org.springframework.security.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸叫我照顾大海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值