package com.moral.service.impl; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import com.moral.common.util.RedisUtil; import com.moral.entity.Account; import com.moral.entity.OperateUser; import com.moral.mapper.AccountMapper; import com.moral.service.AccountService; import com.moral.service.OperateUserService; @Service public class AuthUserServiceImpl implements UserDetailsService { @Resource private AccountMapper accountMapper; @Resource private AccountService accountService; @Resource private OperateUserService operateUserService; @Resource private RedisTemplate redisTemplate; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { String type = RedisUtil.get(redisTemplate, "token_" + username), password; Collection collection = new HashSet(); if ("screen".equals(type)) { Account account = accountService.getAccountByAccountName(username); password = account.getPassword(); List> roleNames = accountMapper.getRoleNameByAccountId(account.getId()); for (Map roleName : roleNames) { collection.add(new SimpleGrantedAuthority((String) roleName.get("role_name"))); } } else { OperateUser operateUser = operateUserService.getOperateUserByMobile(username); password = operateUser.getPassword(); collection.add((new SimpleGrantedAuthority("ROLE_MOBILE"))); } return new User(username, password, collection); } }