喜欢的请点赞👍 不喜欢的解散
废话不多说直接上代码
ContextInfo 封装自己想要的实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ContextInfo {
/**
* 运用信息
*/
private Application application;
/**
* Host
*/
private String host;
/**
* 用户信息
*/
private SmartUser userInfo;
}
shiro 配置
Msg 过程操作信息
public class Msg {
// 状态码
private int status;
// 提示信息
private String message;
// 封装有效数据
private Map<String, Object> data = new HashMap<String, Object>();
public static Msg success() {
Msg result = new Msg();
result.setStatus(200);
result.setMessage("success");
return result;
}
public static Msg fail() {
Msg result = new Msg();
result.setStatus(400);
result.setMessage("fail");
return result;
}
public static Msg noPermission() {
Msg result = new Msg();
result.setStatus(401);
result.setMessage("no permission");
return result;
}
public static Msg error() {
Msg result = new Msg();
result.setStatus(500);
result.setMessage("error");
return result;
}
public static Msg code(int code){
Msg result = new Msg();
result.setStatus(code);
result.setMessage("exception");
return result;
}
public Msg add(String key, Object value) {
this.data.put(key, value);
return this;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Map<String, Object> getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
}
ShiroConfig 配置类
过滤每一次请求 来验证用户信息,验证权限。
@Configuration
public class ShiroConfig {
//shiroFilterFactoryBean
@Bean
public ShiroFilterFactoryBean getShiroFilterFactoryBean(@Qualifier("securityManager") DefaultWebSecurityManager defaultWebSecurityManager){
ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();
//添加shiro的内置过滤器
/*
anon: 无需认证就可访问
authc:必须认证才能访问
user:必须拥有记住我功能才能访问
perms: 拥有对某个资源的权限才能访问
role:拥有某个角色权限才能访问
*/
// 添加自己的过滤器并且取名为jwt
Map<String, Filter> filterMap = new LinkedHashMap<>();
//设置我们自定义的JWT过滤器
filterMap.put("jwt", new JWTFilter());
factoryBean.setFilters(filterMap);
factoryBean.setSecurityManager(defaultWebSecurityManager);
// 设置无权限时跳转的 url;
factoryBean.setUnauthorizedUrl("/unauthorized/无权限");
Map<String, String> filterRuleMap = new LinkedHashMap<>();
// 所有请求通过我们自己的JWT Filter
// 放行不需要权限认证的接口
//放行Swagger接口
filterRuleMap.put("/v2/api-docs","anon");
//右侧菜单栏的顺序加载
filterRuleMap.put("/swagger-resources/configuration/ui","anon");
filterRuleMap.put("/swagger-resources","anon");
filterRuleMap.put("/swagger-resources/configuration/security","anon");
filterRuleMap.put("/swagger-ui.html","anon&#