当前位置: 首页 > news >正文

mysql优化 wordpress网站关键词优化方案

mysql优化 wordpress,网站关键词优化方案,怀化seo快速排名,重庆市建设工程信息网行业协会今天在写前后端分离项目时,用jwt加shiro进行登录权限校验时,RequireRoles("admin")注解不起作用,记录一下。 前提:数据库里面的user_type代表用户类型 :0普通用户 ;1:专家&#xff1…

今天在写前后端分离项目时,用jwt加shiro进行登录权限校验时,@RequireRoles("admin")注解不起作用,记录一下。

前提:数据库里面的user_type代表用户类型 :0普通用户 ;1:专家;2:管理员

1.JwtReam中的内容:

@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
//进行权限的认证
String token = (String) principalCollection.getPrimaryPrincipal();
log.info("进入进行权限认证的方法!token为{}", token);
User user = null;
SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
try {Claims decode = JwtUtils.decode(token);String email = (String) decode.get("email");user = userLoginService.getUserInfoByEmail(email);if (user.getUserType() == 2) {simpleAuthorizationInfo.addRole("admin");log.info("为用户添加admin权限");}
} catch (Exception e) {log.info("解析token异常!");// 解析token异常,返回错误信息!
}
log.info("用户类型为{}",user.getUserType());
return simpleAuthorizationInfo;
}

2.controller中的写法

@RestController
@RequestMapping("admin/user/")
@Validated
@Api(tags = "管理员管理用户")
@RequiresRoles(value = "admin",logical = Logical.AND)
public class ManagerUserController {@Resourceprivate UserService userService;@GetMapping("getAllUser")@ApiOperation(value = "获取所有的用户",response = UserInfo.class)public Result<PageResult> getAllUser(PageDto pageDto) {boolean role = SecurityUtils.getSubject().hasRole("admin");log.info("用户是否有权限:{}",role);return userService.getAllUser(pageDto);}
}

3.结论

这里可以看到controller里面加了@RequiresRoles(value = "admin",logical = Logical.AND),用户需要权限才能访问接口,但是并没有生效。看看控制台输出了什么:

   : 进入进行权限认证的方法!token为 。。。。。。: 用户类型为0: 用户是否有权限:false

说明进入了权限认证的方法doGetAuthorizationInfo(PrincipalCollection principalCollection),并且controller里面的方法判断用户是不是有权限,显示用户并没有权限,但是还是进入了方法,并且执行了方法,获取了数据,

说明@RequiresRoles注解并没有生效

4.解决办法 

在ShiroConfig里面加上下面的代码:

//开启对shiro注解的支持
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
advisor.setSecurityManager(securityManager);
return advisor;
}
//开启aop注解支持
@Bean
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator();defaultAAP.setProxyTargetClass(true);return defaultAAP;
}

 这时用户如果没有权限就会下面的报错:

AuthorizationException

可以在全局异常中捕获,返回信息给前端,这里不再演示。

参考链接:https://www.cnblogs.com/tuifeideyouran/p/7696055.html

参考链接:https://www.cnblogs.com/shiguotao-com/p/10617693.html

http://www.dinnco.com/news/53989.html

相关文章:

  • 上海前端baiduseoguide
  • 北京网站开发一般多少钱windows优化
  • 做网站找沈阳横纵网络百度流量统计
  • 网站制作软件名字线做玄幻小说排行榜百度风云榜
  • 音乐网站手机模板seo优化网站的注意事项
  • wordpress显示标题网站优化公司大家好
  • 设计公司的网站详情搜索引擎营销优化策略有哪些
  • 上海防伪网站建设免费开源网站
  • 设计彩票网站开发最有效的恶意点击软件
  • 三 网站建设软件开发公司有哪些
  • 网页编辑软件手机版台州seo快速排名
  • 可以自己做攻略的网站手机建站平台
  • 交换机做网站网站优化企业排名
  • 做网站看好金石网络优化合作平台
  • 雄县没有做网站的公司如何提升网站seo排名
  • 广州注册公司自助办理锦州网站seo
  • 百度首页网站推广多少钱一年做一个公司网站大概要多少钱
  • 网站开发一个多少钱软文范文大全
  • 介绍网站开发的意义google seo怎么做
  • 大学网站建设专业深圳纯手工seo
  • 做网站建设科技公司长沙seo优化推荐
  • 做外贸营销网站如何做个网站推广自己产品
  • 怀化建设局网站郑州百度推广公司电话
  • 建站管理后台引流推广平台软件
  • 佛山制作网站设计报价seo排名优化是什么
  • 最近做网站开发有前途没aso关键词排名优化是什么
  • 运城网站建设公司有多少专业排名优化工具
  • java开发企业网站开发文档6seo查询 站长之家
  • 做留言的网站无需下载直接进入的网站的代码
  • 建站软件公司域名被墙查询检测