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

自己能制作免费网站吗上海网页制作服务商

自己能制作免费网站吗,上海网页制作服务商,网站多个域名备案,网站开发开发需求文档今天在写前后端分离项目时,用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.yayakq.cn/news/876997/

相关文章:

  • 设计配色网站百度推广首次开户需要多少钱
  • 创新的邯郸网站建设cmsv6官方免费下载
  • 青岛城阳网站制作关闭wordpress页面评论
  • 网站怎么查哪家公司做的厦门建设局领导
  • 江苏泰兴网站建设学校网站的建设方案
  • 个人网站设计图片引流推广多少钱一个
  • 做网站推广费用淘客网站是怎么做的
  • 网站开发按工时收费南阳做网站电话
  • 建设需要什么系统网站自建国外购物网站
  • phpcms做双语网站做电商需要准备多少钱
  • 泰安肥城建设局网站南昌公司网站建设模板
  • 建设银行新乡分行城南支行网站全能网站建设教程
  • 阿里云建站后台建站sqlite 做网站数据库
  • 可以自己做效果图的网站音乐网页设计材料加字加图片
  • 永嘉县住房和城乡建设局网站投资类wordpress主题
  • 郑州做网站七彩科技wordpress信息修改
  • 网站建设合同要不要交印花税wordpress主题加载很慢
  • 赣州建网站常州企业网站建站模板
  • 怎么做相册网站扁平化配色方案网站
  • 白酒类网站模板发泡机 东莞网站建设
  • 天津重型网站建设风格米泉seo快速排名
  • 怎么做网站分站鄠邑建站 网站建设
  • 外贸网站建设昆明音乐网站开发开发
  • 配资网站建设是什么网站建设需求说明书举例
  • 个人网站审批江西中恒建设集团有限公司网站
  • 深圳罗湖网站设计百度广告怎么收费标准
  • 花都网站建设公司天蝎信息查企业免费
  • 家装建材公司网站建设网络运营推广怎么做
  • 做动画视频的网站戈韦思网站建设
  • 移动端网站开发环境企业做网站需要什么条件