Skip to content

Commit 2ceb663

Browse files
committed
优化JwtFilter注释
1 parent 4969f95 commit 2ceb663

File tree

4 files changed

+34
-13
lines changed

4 files changed

+34
-13
lines changed

src/main/java/com/wang/config/shiro/ShiroConfig.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import javax.servlet.Filter;
1717
import java.util.HashMap;
18+
import java.util.LinkedHashMap;
1819
import java.util.Map;
1920

2021
/**
@@ -66,11 +67,11 @@ public ShiroFilterFactoryBean factory(DefaultWebSecurityManager securityManager)
6667
filterMap.put("jwt", new JwtFilter());
6768
factoryBean.setFilters(filterMap);
6869
factoryBean.setSecurityManager(securityManager);
69-
// 自定义url规则
70-
Map<String, String> filterRuleMap = new HashMap<>(16);
70+
// 自定义url规则使用LinkedHashMap有序Map
71+
LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>(16);
7172
// 所有请求通过我们自己的JWTFilter
72-
filterRuleMap.put("/**", "jwt");
73-
factoryBean.setFilterChainDefinitionMap(filterRuleMap);
73+
filterChainDefinitionMap.put("/**", "jwt");
74+
factoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
7475
return factoryBean;
7576
}
7677

src/main/java/com/wang/config/shiro/UserRealm.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,17 @@ protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principal
6363
// 查询用户角色
6464
List<RoleDto> roleDtos = roleMapper.findRoleByUser(userDto);
6565
for (RoleDto roleDto : roleDtos) {
66-
// 添加角色
67-
simpleAuthorizationInfo.addRole(roleDto.getName());
68-
// 根据用户角色查询权限
69-
List<PermissionDto> permissionDtos = permissionMapper.findPermissionByRole(roleDto);
70-
for (PermissionDto permissionDto : permissionDtos) {
71-
// 添加权限
72-
simpleAuthorizationInfo.addStringPermission(permissionDto.getPerCode());
66+
if (roleDto != null) {
67+
// 添加角色
68+
simpleAuthorizationInfo.addRole(roleDto.getName());
69+
// 根据用户角色查询权限
70+
List<PermissionDto> permissionDtos = permissionMapper.findPermissionByRole(roleDto);
71+
for (PermissionDto permissionDto : permissionDtos) {
72+
if (permissionDto != null) {
73+
// 添加权限
74+
simpleAuthorizationInfo.addStringPermission(permissionDto.getPerCode());
75+
}
76+
}
7377
}
7478
}
7579
return simpleAuthorizationInfo;

src/main/java/com/wang/config/shiro/jwt/JwtFilter.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.wang.util.common.JsonConvertUtil;
1111
import com.wang.util.common.PropertiesUtil;
1212
import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
13+
import org.apache.shiro.web.util.WebUtils;
1314
import org.slf4j.Logger;
1415
import org.slf4j.LoggerFactory;
1516
import org.springframework.http.HttpStatus;
@@ -44,7 +45,7 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
4445
*/
4546
@Override
4647
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
47-
// 判断用户是否想要登入
48+
// 查看当前Header中是否携带Authorization属性(Token),有的话就进行登录认证授权
4849
if (this.isLoginAttempt(request, response)) {
4950
try {
5051
// 进行Shiro的登录UserRealm
@@ -81,6 +82,21 @@ protected boolean isAccessAllowed(ServletRequest request, ServletResponse respon
8182
this.response401(request, response, msg);
8283
return false;
8384
}
85+
} else {
86+
// 没有携带Token
87+
HttpServletRequest httpRequest = WebUtils.toHttp(request);
88+
// 获取当前请求类型
89+
String httpMethod = httpRequest.getMethod();
90+
// 获取当前请求URI
91+
String requestURI = httpRequest.getRequestURI();
92+
LOGGER.info("当前请求 {} Authorization属性(Token)为空 请求类型 {}", requestURI, httpMethod);
93+
94+
// mustLoginFlag = true 开启任何请求必须登录才可访问
95+
Boolean mustLoginFlag = false;
96+
if (mustLoginFlag) {
97+
this.response401(request, response, "请先登录");
98+
return false;
99+
}
84100
}
85101
return true;
86102
}

src/main/java/com/wang/controller/UserController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ public ResponseBean info() {
197197
// 获取当前登录用户Id
198198
Integer id = userUtil.getUserId();
199199
// 获取当前登录用户Token
200-
String Token = userUtil.getToken();
200+
String token = userUtil.getToken();
201201
// 获取当前登录用户Account
202202
String account = userUtil.getAccount();
203203
return new ResponseBean(HttpStatus.OK.value(), "您已经登录了(You are already logged in)", userDto);

0 commit comments

Comments
 (0)