(十三)springboot实战——springboot前后端分离方式项目集成spring securtity安全框架_springboot 集成spring security

public static <T> ApiResponse<T> success(String msg, T data) {
    ApiResponse<T> apiResponse = new ApiResponse<>(200, msg, data);
    return apiResponse;
}

/**
 * 失败统一响应格式
 *
 * @param code
 * @param message
 * @param <T>
 * @return
 */
public static <T> ApiResponse<T> fail(Integer code, String message) {
    return new ApiResponse<>(code, message, null);
}

/**
 * 失败统一响应格式
 *
 * @param errorCode
 * @param <T>
 * @return
 */
public static <T> ApiResponse<T> fail(ErrorCode errorCode) {
    return new ApiResponse<>(errorCode.getCode(), errorCode.getMsg(), null);
}

}


**⑦ 统一错误码定义**



package com.yundi.atp.commom;

public enum ErrorCode {
SYSTEM_ERROR(10000, “系统错误!”),
UN_AUTH(10001, “用户未认证,请先登录!”),
AUTH_FAILURE(10002, “认证失败,用户名或密码错误!”),
UN_ACCESS(10003, “该用户没有此操作权限!”),
METHOD_ARGS_VALID(10004, “方法参数验证失败!”),
TOKEN_VALID(10005, “token鉴权失败!”),
TOKEN_NOT_EXIST(10006, “token不存在!”),
;

private Integer code;
private String msg;

ErrorCode(Integer code, String message) {
    this.code = code;
    this.msg = message;
}

public Integer getCode() {
    return code;
}

public void setCode(Integer code) {
    this.code = code;
}

public String getMsg() {
    return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

}


**⑧创建DbUserDetailsManager类实现UserDetailsManager和UserDetailsPasswordService接口方法,用于实现数据库版本的认证权限管理,该类主要是实现用户数据和权限数据的获取,用于认证和授权使用**



package com.yundi.atp.auth;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yundi.atp.entity.AuthUser;
import com.yundi.atp.mapper.AuthUserMapper;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsPasswordService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.provisioning.UserDetailsManager;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collection;

@Service
public class DbUserDetailsManager implements UserDetailsManager, UserDetailsPasswordService {
@Resource
private AuthUserMapper authUserMapper;

@Override
public UserDetails updatePassword(UserDetails user, String newPassword) {
    return null;
}

@Override
public void createUser(UserDetails userDetails) {
    AuthUser authUser = new AuthUser();
    authUser.setUsername(userDetails.getUsername());
    authUser.setPassword(userDetails.getPassword());
    authUser.setEnabled(true);
    authUserMapper.insert(authUser);
}

@Override
public void updateUser(UserDetails user) {

}

@Override
public void deleteUser(String username) {

}

@Override
public void changePassword(String oldPassword, String newPassword) {

}

@Override
public boolean userExists(String username) {
    return false;
}

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    //查询用户数据
    QueryWrapper<AuthUser> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("username", username);
    AuthUser authUser = authUserMapper.selectOne(queryWrapper);
    if (authUser == null) 
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值