为什么LoginModule 中的@Autowired 返回null?

问题描述

我用 JAAS 做 Spring Security。但是 @Autowired 返回 null

    package com.example.LabOneBusinessLogic.config.Security.Jaas;

import com.example.LabOneBusinessLogic.config.Security.jwt.JwtProvider;
import com.example.LabOneBusinessLogic.entity.Users;
import com.example.LabOneBusinessLogic.service.UserService;;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.security.auth.Subject;
import javax.security.auth.callback.*;
import javax.security.auth.login.LoginException;
import javax.security.auth.spi.LoginModule;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class JaasLoginModule implements LoginModule
    {
        private CallbackHandler handler;
        private Subject subject;
        private  String login;
        private List<String> userGroups;
    
        @Autowired
        private JwtProvider jwtProvider;
    
    
        @Autowired
        private UserService userService;
        public void initialize(Subject subject,CallbackHandler callbackHandler,Map<String,?> sharedState,?> options)
            {
    
                handler = callbackHandler;
                this.subject = subject;
            }
    
    
    
        @Override
        public boolean login() throws LoginException {
            Callback[] callbacks = new Callback[2];
            callbacks[0] = new NameCallback("username");
            callbacks[1] = new PasswordCallback("password",true);
    
            try {
    
                handler.handle(callbacks);
                String name = ((NameCallback) callbacks[0]).getName();
                String password = String.valueOf(((PasswordCallback) callbacks[1]).getpassword());
                String userLogin = jwtProvider.getLoginFromToken(password);
                Users userEntity = userService.findByLogin(userLogin);
                if (userEntity!=null) {
                    userGroups = new ArrayList<String>();
                    userGroups.add("USER");
                    return true;
                }
            } catch (Exception e) {
                return false;
            }
            return false;
        }
    
        @Override
        public boolean commit() throws LoginException {
    
            if (userGroups != null && userGroups.size() > 0) {
                for (String groupName : userGroups) {
                    subject.getPrincipals().add(new JaasPrincipal(groupName));
                }
            }
            return true;
        }
    
        @Override
        public boolean abort() throws LoginException {
            return false;
        }
    
        @Override
        public boolean logout() throws LoginException {
            subject.getPrincipals().clear();
            return true;
        }
    
    
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)