diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
index 4df76c6..2c62d59 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
@@ -10,6 +10,7 @@
 import com.supwisdom.dlpay.framework.domain.TOperator
 import com.supwisdom.dlpay.framework.redisrepo.ApiClientRepository
 import com.supwisdom.dlpay.framework.security.OperUtil
+import com.supwisdom.dlpay.framework.service.OperatorDetailService
 import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.framework.util.HmacUtil
 import com.supwisdom.dlpay.system.service.CommonService
@@ -17,7 +18,9 @@
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.http.HttpStatus
 import org.springframework.http.ResponseEntity
+import org.springframework.security.core.annotation.AuthenticationPrincipal
 import org.springframework.security.core.context.SecurityContextHolder
+import org.springframework.security.core.userdetails.UserDetails
 import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler
 import org.springframework.social.connect.web.HttpSessionSessionStrategy
 import org.springframework.stereotype.Controller
@@ -147,11 +150,11 @@
     }
 
     @GetMapping("/index")
-    fun homeView(model: Model): String {
-        model.addAttribute("loginOper", TOperator("111","开发测试"))
-        val funclist = functionService.getFunctionsByOperid("111")
+    fun homeView(@AuthenticationPrincipal operUser: UserDetails, model: Model): String {
+        model.addAttribute("loginOper", operUser as TOperator)
+        val funclist = functionService.getFunctionsByOperid(operUser.operid)
         model.addAttribute("menus", functionService.getMenuTree(funclist, "-1"))
-        model.addAttribute("payapiVersion",commonService.getSystemVersion())
+        model.addAttribute("payapiVersion", commonService.getSystemVersion())
         return "index"
     }
 }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/security.kt b/src/main/kotlin/com/supwisdom/dlpay/security.kt
index 7347908..124eb95 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -5,6 +5,7 @@
 import com.supwisdom.dlpay.framework.dao.OperRoleDao
 import com.supwisdom.dlpay.framework.dao.OperatorDao
 import com.supwisdom.dlpay.framework.security.ValidateCodeSecurityConfig
+import com.supwisdom.dlpay.framework.service.OperatorDetailService
 import com.supwisdom.dlpay.framework.util.StringUtil
 import org.jose4j.jwt.consumer.InvalidJwtException
 import org.springframework.beans.factory.annotation.Autowired
@@ -16,7 +17,9 @@
 import org.springframework.security.authentication.AuthenticationProvider
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
 import org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider
+import org.springframework.security.authentication.dao.DaoAuthenticationProvider
 import org.springframework.security.authentication.jaas.AuthorityGranter
+import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder
 import org.springframework.security.config.annotation.web.builders.HttpSecurity
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
@@ -60,50 +63,9 @@
     }
 }
 
-@Component
-class OperatorAuthenticationProvider : AuthenticationProvider {
-    @Autowired
-    lateinit var operatorDao: OperatorDao
-
-    @Autowired
-    lateinit var operRoleDao: OperRoleDao
-
-    override fun authenticate(authentication: Authentication?): Authentication {
-        return authentication?.let {
-            val oper = operatorDao.findByOpercode(it.name)
-                    ?: throw AuthenticationCredentialsNotFoundException("操作员不存在或密码错误")
-            if (BCryptPasswordEncoder().matches(it.credentials.toString(), oper.password)) {
-                val roles = operRoleDao.getRolecodeByOperid(oper.operid)
-                if (roles.size > 0) {
-                    oper.authorities = roles.mapNotNull { role ->
-                        role?.let {
-                            SimpleGrantedAuthority(role)
-                        }
-                    }
-                } else {
-                    oper.authorities = listOf()
-                }
-                return UsernamePasswordAuthenticationToken(authentication.name, authentication.credentials,
-                        oper.authorities)
-            } else {
-                throw AuthenticationCredentialsNotFoundException("操作员不存在或密码错误")
-            }
-        } ?: throw AuthenticationCredentialsNotFoundException("操作员不存在或密码错误")
-    }
-
-    override fun supports(authentication: Class<*>?): Boolean {
-        return authentication?.equals(UsernamePasswordAuthenticationToken::class.java)
-                ?: false
-    }
-}
-
 @EnableWebSecurity
 class WebSecurityConfig {
 
-    @Bean
-    fun passwordEncoder(): BCryptPasswordEncoder {
-        return BCryptPasswordEncoder()
-    }
 
     companion object {
         @Configuration
@@ -148,6 +110,26 @@
             lateinit var authenticationSuccessHandler: AuthenticationSuccessHandler
 
 
+            @Autowired
+            lateinit var userDetailsService: OperatorDetailService
+
+            override fun configure(auth: AuthenticationManagerBuilder) {
+                auth.authenticationProvider(authenticationProvider())
+            }
+
+            @Bean
+            fun authenticationProvider(): DaoAuthenticationProvider {
+                val authProvider = DaoAuthenticationProvider()
+                authProvider.setUserDetailsService(userDetailsService)
+                authProvider.setPasswordEncoder(passwordEncoder())
+                return authProvider
+            }
+
+            @Bean
+            fun passwordEncoder(): BCryptPasswordEncoder {
+                return BCryptPasswordEncoder()
+            }
+
             @Bean
             fun jdbcTokenImplement(): JdbcTokenRepositoryImpl {
                 return JdbcTokenRepositoryImpl().also {
