Spring安全性仅用于授权.外部认证

正如标题所说,我正在开发一个从外部应用程序接收用户身份验证信息的Web应用程序.我的应用程序的弹簧控制器获取用户信息并将其存储在会话中.我想在Spring Security中验证此用户,然后使用他的角色授予/拒绝访问URL等URL

<intercept-url pattern="/myprotectedpage*" access="hasRole('rightrole')" />

我阅读了一些关于PRE_AUTH_FILTER和UserDetailsS​​ervice的教程,但我无法理解. Spring Security的应用程序生命周期是什么?涉及哪些课程?
我需要一些完整的工作样本.

解决方法:

实现保存用户信息的服务.

@Service
public class UserAuthenticationInfoService {

    private final Map<String, UserInfo> infos = new HashMap<String, UserInfo>();

    public void addUserInfo(UserInfo userInfo){
        infos.put(userInfo.getUsername(), userInfo);   
    }

    public UserInfo getUserInfo(String username) {
        return infos.get(username);
    }

}

您的控制器使用您从外部应用程序收到的用户信息填充UserAuthenticationInfoService服务.

然后实现自定义UserDetailsS​​ervice来访问这些信息.

public class CustomerUserDetailsService implements UserDetailsService {
    @Autowired
    private UserAuthenticationInfoService service;

     public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException, DataAccessException {
        UserInfo info = service.getUserInfo(userName);
        return new User(info.getUsername(), info.getPassword(), info.getAuthorities());
    }
}

并设置spring security context以使用此UserDetailsS​​ervice(您可以在spring安全文档中找到它)

上一篇:PHP var_dump()上的授权标头为空


下一篇:java – 使用MS SQL的JAX-RS中的行级安全性