Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
sv-springboot
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bsoft
sv-springboot
Commits
5d8d38ae
Commit
5d8d38ae
authored
Jan 29, 2021
by
宋振民
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:mac地址登录控制
parent
a820efe6
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
225 additions
and
6 deletions
+225
-6
hs-admin/src/test/java/com/hs/admin/HsAdminApplicationTests.java
+1
-0
hs-api/src/main/java/com/hs/api/common/enums/SysConfigKeyType.java
+42
-0
hs-api/src/main/java/com/hs/api/mapper/SysLoginConfigMapper.java
+13
-0
hs-api/src/main/java/com/hs/api/model/SysConfig.java
+68
-0
hs-api/src/main/java/com/hs/api/service/Impl/LoginServiceImpl.java
+51
-6
hs-api/src/main/resources/mapper/SysLoginConfigMapper.xml
+18
-0
hs-api/src/test/java/com/hs/api/BsoftApiApplicationTests.java
+6
-0
hs-api/src/test/java/com/hs/api/service/LoginServiceTest.java
+26
-0
No files found.
hs-admin/src/test/java/com/hs/admin/HsAdminApplicationTests.java
View file @
5d8d38ae
...
@@ -14,6 +14,7 @@ class HsAdminApplicationTests {
...
@@ -14,6 +14,7 @@ class HsAdminApplicationTests {
@Test
@Test
void
contextLoads
()
{
void
contextLoads
()
{
}
}
}
}
hs-api/src/main/java/com/hs/api/common/enums/SysConfigKeyType.java
0 → 100644
View file @
5d8d38ae
package
com
.
hs
.
api
.
common
.
enums
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
enum
SysConfigKeyType
{
MAC_ADDRESS_RANGE
(
"MAC_ADDRESS_RANGE"
,
"MAC地址范围过滤"
),
MAC_BINDING
(
"MAC_BINDING"
,
"MAC地址绑定"
);
private
String
value
;
private
String
desc
;
SysConfigKeyType
(
String
value
,
String
desc
)
{
this
.
value
=
value
;
this
.
desc
=
desc
;
}
public
String
getValue
()
{
return
value
;
}
public
String
getDesc
()
{
return
desc
;
}
public
static
List
<
Map
<
String
,
Object
>>
all
()
{
List
<
Map
<
String
,
Object
>>
list
=
new
ArrayList
<>();
for
(
SysConfigKeyType
projectType
:
values
()){
Map
<
String
,
Object
>
map
=
new
HashMap
<
String
,
Object
>()
{
{
put
(
"value"
,
projectType
.
getValue
());
put
(
"description"
,
projectType
.
getDesc
());
}
};
list
.
add
(
map
);
}
return
list
;
}
}
hs-api/src/main/java/com/hs/api/mapper/SysLoginConfigMapper.java
0 → 100644
View file @
5d8d38ae
package
com
.
hs
.
api
.
mapper
;
import
com.hs.api.model.SysConfig
;
import
com.hs.api.model.SysUser
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
import
java.util.Map
;
public
interface
SysLoginConfigMapper
{
List
<
SysConfig
>
selectByKey
(
String
key
);
}
\ No newline at end of file
hs-api/src/main/java/com/hs/api/model/SysConfig.java
0 → 100644
View file @
5d8d38ae
package
com
.
hs
.
api
.
model
;
import
java.util.Date
;
public
class
SysConfig
{
private
Long
id
;
private
Date
createDate
;
private
boolean
state
;
private
String
key
;
private
String
name
;
private
String
value
;
public
Long
getId
()
{
return
id
;
}
public
void
setId
(
Long
id
)
{
this
.
id
=
id
;
}
public
Date
getCreateDate
()
{
return
createDate
;
}
public
void
setCreateDate
(
Date
createDate
)
{
this
.
createDate
=
createDate
;
}
public
boolean
getState
()
{
return
state
;
}
public
void
setState
(
boolean
state
)
{
this
.
state
=
state
;
}
public
String
getKey
()
{
return
key
;
}
public
void
setKey
(
String
key
)
{
this
.
key
=
key
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getValue
()
{
return
value
;
}
public
void
setValue
(
String
value
)
{
this
.
value
=
value
;
}
}
\ No newline at end of file
hs-api/src/main/java/com/hs/api/service/Impl/LoginServiceImpl.java
View file @
5d8d38ae
package
com
.
hs
.
api
.
service
.
Impl
;
package
com
.
hs
.
api
.
service
.
Impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.hs.api.common.enums.SysConfigKeyType
;
import
com.hs.api.common.exceptions.DBConfigurationError
;
import
com.hs.api.common.exceptions.DBConfigurationError
;
import
com.hs.api.common.utils.TokenUtil
;
import
com.hs.api.common.utils.TokenUtil
;
import
com.hs.api.mapper.DicOrgMapper
;
import
com.hs.api.mapper.*
;
import
com.hs.api.mapper.SysRoleMapper
;
import
com.hs.api.mapper.SysUserMapper
;
import
com.hs.api.mapper.SysVersionMapper
;
import
com.hs.api.model.*
;
import
com.hs.api.model.*
;
import
com.hs.api.model.respmodel.LoginInfo
;
import
com.hs.api.model.respmodel.LoginInfo
;
import
com.hs.api.service.LoginService
;
import
com.hs.api.service.LoginService
;
import
com.hs.api.service.UserService
;
import
com.hs.api.service.UserService
;
import
org.apache.catalina.User
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
@Service
@Service
...
@@ -32,6 +35,8 @@ public class LoginServiceImpl implements LoginService {
...
@@ -32,6 +35,8 @@ public class LoginServiceImpl implements LoginService {
private
SysRoleMapper
sysRoleMapper
;
private
SysRoleMapper
sysRoleMapper
;
@Resource
@Resource
private
SysVersionMapper
sysVersionMapper
;
private
SysVersionMapper
sysVersionMapper
;
@Resource
private
SysLoginConfigMapper
sysLoginConfigMapper
;
@Override
@Override
public
LoginInfo
login
(
String
logName
,
String
password
,
String
macAddrss
,
String
ip
)
{
public
LoginInfo
login
(
String
logName
,
String
password
,
String
macAddrss
,
String
ip
)
{
...
@@ -39,7 +44,10 @@ public class LoginServiceImpl implements LoginService {
...
@@ -39,7 +44,10 @@ public class LoginServiceImpl implements LoginService {
LoginInfo
loginInfo
=
new
LoginInfo
();
LoginInfo
loginInfo
=
new
LoginInfo
();
SysUser
user
=
userServiceImpl
.
findByLoginName
(
logName
);
SysUser
user
=
userServiceImpl
.
findByLoginName
(
logName
);
if
(
user
!=
null
&&
user
.
getPassword
().
equals
(
password
)
&&
(
user
.
getMacAddress
()
==
null
||
user
.
getMacAddress
().
equals
(
macAddrss
)))
{
if
(!
checkMacAddress
(
macAddrss
,
user
))
throw
new
DBConfigurationError
(
"当前MAC地址无法登录!"
);
if
(
user
!=
null
&&
user
.
getPassword
().
equals
(
password
))
{
String
token
=
TokenUtil
.
getToken
(
password
,
user
);
String
token
=
TokenUtil
.
getToken
(
password
,
user
);
//修改ip以及最后登录时间、MAC地址
//修改ip以及最后登录时间、MAC地址
user
.
setLastIp
(
ip
);
user
.
setLastIp
(
ip
);
...
@@ -65,11 +73,48 @@ public class LoginServiceImpl implements LoginService {
...
@@ -65,11 +73,48 @@ public class LoginServiceImpl implements LoginService {
SysVersion
version
=
sysVersionMapper
.
selectLastDate
();
SysVersion
version
=
sysVersionMapper
.
selectLastDate
();
loginInfo
.
setVersion
(
version
);
loginInfo
.
setVersion
(
version
);
}
else
{
}
else
{
throw
new
DBConfigurationError
(
"账号、密码
或者MAC地址
错误!"
);
throw
new
DBConfigurationError
(
"账号、密码错误!"
);
}
}
return
loginInfo
;
return
loginInfo
;
}
}
private
boolean
checkMacAddress
(
String
macAddress
,
SysUser
user
)
{
if
(
checkMacRange
(
macAddress
)
&&
checkMacBind
(
macAddress
,
user
.
getMacAddress
()))
{
return
true
;
}
return
false
;
}
private
boolean
checkMacRange
(
String
macAddress
)
{
List
<
SysConfig
>
sysConfigList
=
sysLoginConfigMapper
.
selectByKey
(
SysConfigKeyType
.
MAC_ADDRESS_RANGE
.
getValue
());
if
(
sysConfigList
.
size
()
==
0
)
return
true
;
SysConfig
sysConfig
=
sysConfigList
.
get
(
0
);
//mac地址范围控制
if
(
sysConfig
.
getState
())
{
String
optionalValue
=
sysConfig
.
getValue
();
String
[]
macAddrArr
=
optionalValue
.
split
(
","
);
for
(
String
macAddr
:
macAddrArr
)
{
if
(
macAddr
.
equals
(
macAddress
))
return
true
;
}
}
else
{
return
true
;
}
return
false
;
}
private
boolean
checkMacBind
(
String
macAddress
,
String
lastMacAddress
)
{
List
<
SysConfig
>
sysConfigList
=
sysLoginConfigMapper
.
selectByKey
(
SysConfigKeyType
.
MAC_BINDING
.
getValue
());
if
(
sysConfigList
.
size
()
==
0
)
return
true
;
SysConfig
sysConfig
=
sysConfigList
.
get
(
0
);
if
(
sysConfig
.
getState
())
{
if
(
lastMacAddress
.
equals
(
""
)
||
macAddress
.
equals
(
lastMacAddress
))
return
true
;
}
else
{
return
true
;
}
return
false
;
}
public
boolean
updatePass
(
String
logName
,
String
oldPassword
,
String
newPassword
)
{
public
boolean
updatePass
(
String
logName
,
String
oldPassword
,
String
newPassword
)
{
int
result
=
0
;
int
result
=
0
;
SysUser
user
=
userServiceImpl
.
findByLoginName
(
logName
);
SysUser
user
=
userServiceImpl
.
findByLoginName
(
logName
);
...
...
hs-api/src/main/resources/mapper/SysLoginConfigMapper.xml
0 → 100644
View file @
5d8d38ae
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.hs.api.mapper.SysLoginConfigMapper"
>
<resultMap
id=
"ResultMap"
type=
"com.hs.api.model.SysConfig"
>
<id
column=
"ID"
jdbcType=
"DECIMAL"
property=
"id"
/>
<result
column=
"CREATE_DATE"
jdbcType=
"TIMESTAMP"
property=
"createDate"
/>
<result
column=
"STATE"
jdbcType=
"BOOLEAN"
property=
"state"
/>
<result
column=
"KEY"
jdbcType=
"VARCHAR"
property=
"key"
/>
<result
column=
"NAME"
jdbcType=
"VARCHAR"
property=
"name"
/>
<result
column=
"VALUE"
jdbcType=
"VARCHAR"
property=
"value"
/>
</resultMap>
<select
id=
"selectByKey"
resultMap=
"ResultMap"
>
select *
from SYS_CONFIG
where `key` = #{key,jdbcType=VARCHAR}
</select>
</mapper>
\ No newline at end of file
hs-api/src/test/java/com/hs/api/BsoftApiApplicationTests.java
View file @
5d8d38ae
...
@@ -2,11 +2,17 @@ package com.hs.api;
...
@@ -2,11 +2,17 @@ package com.hs.api;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runner.RunWith
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
org.springframework.test.context.junit4.SpringRunner
;
@RunWith
(
SpringRunner
.
class
)
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
@SpringBootTest
@SpringBootApplication
@MapperScan
(
"com.hs.api.mapper"
)
@ComponentScan
(
basePackages
=
{
"com.hs.common.config"
,
"com.hs.api"
})
public
class
BsoftApiApplicationTests
{
public
class
BsoftApiApplicationTests
{
@Test
@Test
...
...
hs-api/src/test/java/com/hs/api/service/LoginServiceTest.java
0 → 100644
View file @
5d8d38ae
package
com
.
hs
.
api
.
service
;
import
com.hs.api.BsoftApiApplicationTests
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
BsoftApiApplicationTests
.
class
)
public
class
LoginServiceTest
{
@Autowired
LoginService
loginService
;
@Test
public
void
test
()
{
String
logName
=
"hospital"
;
String
password
=
"123"
;
String
macAddrss
=
"EO-D5-5E-6C-4D-7D"
;
String
ip
=
"112.64.68.44"
;
loginService
.
login
(
logName
,
password
,
macAddrss
,
ip
);
System
.
out
.
println
(
1111
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment