(一)、spring boot security 认证--自定义登录实现


Spring Security文章目录


简介

spring security主要分为两部分,认证(authentication)和授权(authority)。

这一篇主要是认证部分,它由 ProviderManager(AuthenticationManager)实现。具体层次结构如下:

AuthenticationManager说明

认证的核心就是登录,这里简单介绍下security自定义token登录的实现逻辑,同时兼容用户名密码登录。

大体分为以下几个步骤:

  1. 自定义AuthenticationToken实现: 不同登录方式使用不同的token
  2. 自定义AuthenticationProcessingFilter实现:用来过滤指定的登录方式,生成对应的自定义AuthenticationToken实现
  3. 自定义AuthenticationProvider实现:针对不同登录方式提供的认证逻辑
  4. 自定义UserDetailsService实现:自定义用户信息查询服务
  5. WebSecurityConfigurerAdapter声明:security信息配置,将前面的自定义对象注入到流程中。

代码路径

github代码路径

步骤说明

注:仅说明实现方式,逻辑简化处理。

1、自定义AuthenticationProcessingFilter实现

package demo.model;

import org.springframework.security.authentication.AbstractAuthenticationToken;
import org.springframework.security.core.GrantedAuthority;

import java.util.Collection;

/**
 *
 * @Description:  声明自定义token,是为后面的AuthenticationProvider提供支撑,区分不同类型的处理。
 *
 * @auther: csp
 * @date:  2019/1/7 下午6:25
 *
 */
public class LoginToken extends AbstractAuthenticationToken {

    private final String token;

    public LoginToken(String token) {
        super(null);
        this.token = token;
    }

    public LoginToken(String token, Collection<? extends GrantedAuthority> authorities) {
        super(authorities);
        this.token = token;
        setAuthenticated(true);
    }


    // 这个地方传递下token,逻辑是简化的逻辑,具体可以根据实际场景处理。
    // 如jwt token,解析出来username等信息,放到该token中。
    @Override
    public Object getCredentials() {
        return this.token;
    }

    @Override
    public Object getPrincipal() {
        return null;
    }
}

2、自定义AuthenticationProcessingFilter实现

package demo.filter;

import demo.model.LoginToken;
import org.springframework.security.authentication.AbstractAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.Abst
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值