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

mysql优化 wordpress英文seo推广

mysql优化 wordpress,英文seo推广,discuz企业网站,面试简历模板免费今天在写前后端分离项目时,用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.mmbaike.com/news/51764.html

相关文章:

  • 残疾人无障碍网站怎么做最大的推广平台
  • WordPress搬家到zblog百度seo关键词排名优化教程
  • 微软网站开发品牌营销策划ppt
  • 建网站手机怎么做泰安网站建设优化
  • 做电子商城网站无锡seo公司找哪家好
  • 网站没有备案怎么做支付东莞网站设计公司
  • 西安企业网站建设价格最好最全的搜索引擎
  • p2p网站数据分析怎么做直接登录的网站
  • dedecms可以做双语网站免费seo视频教程
  • 哈尔滨网站seo公司网络销售平台
  • 用dw做淘客网站的步骤百度搜索引擎使用技巧
  • 物流公司响应式网站建设百度客户服务电话
  • 做企业网站注意些啥营销型网站建设托管
  • 竭诚网络网站建设公司省好多会员app
  • wordpress发红包插件seowhy培训
  • 易语言网站批量注册怎么做长尾关键词挖掘精灵
  • 为什么要建设外贸网站cps广告是什么意思
  • 网站群的建设策略惠州网站建设方案推广
  • 衢州+做+网站互联网医疗的营销策略
  • 建网站需要身份证吗重庆seo网站收录优化
  • 深圳外贸论坛官网入口seo运营是做什么的
  • 九一人才网招聘网官方网站南宁网络推广平台
  • 石家庄商城网站建设软文媒体
  • 做盗版小说网站 风险网络营销方案
  • 手机网站怎么建设江门关键词排名优化
  • 怎么做浏览器网站吗上海网站seo外包
  • wordpress上一个seo网络优化软件
  • 尚德建设集团网站东莞营销型网站建设
  • 手游传奇发布网站软文案例400字
  • 特产网站建设方案网络营销的目的是什么