当前位置: 首页 > 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/995857/

相关文章:

  • 杭州萧山网站开发html网站开发实例
  • 网站开发 强制兼容模式微商刚起步怎么找客源
  • 北京 网站 建设电销客户数据怎么买
  • 台州国强建设网站wordpress主机怎么建站
  • 北京做手机网站抖音带运营的执行老大
  • 做包子网站长春免费网站制作
  • 如何把自己写的html变成网站公司内部 网站开发
  • 庆阳网站建设报价网站查询是否安全
  • 红色简约的手机社区类网站html5响应式模板下载国家提供的免费网课平台
  • 网站建设的展望 视频做通路富集分析的网站
  • 网站建设全包需要多少钱服务器搭建vps教程
  • 网站建设宣传海报建筑人才网评的助工
  • 自己怎做网站后台wordpress外贸建站教程
  • wordpress站群源码十大财务软件排名
  • 浙江网站开发工程师青岛煜鹏网站建设公司
  • 食品网站的功能定位企业网站标题设置
  • ASP.NET网站建设实战网上接网站项目
  • 东莞免费建网站企业wordpress 文章排名
  • 百度seo网站优化 网络服务wordpress打开wordpress
  • w网站开发文献中启智联网站建设
  • 天津的网站建设公司做机械外贸什么网站好
  • 成都企业做网站龙岗英文网站建设
  • 淄博网站制作公司推广新开传奇网站发布网单
  • 深圳市福田建设集团seo的主要策略和流程内容
  • 中国风 网站模板企业建网站设计
  • 工业和信息化部网站备案系统是什么意思嘉兴网站托管
  • 餐饮外哪个网站做推广wordpress app中文版下载
  • 烟台网站建设设计百度推广网页版
  • 网站最新一次改版时间什么意思php精品网站建设
  • 同信.长春网站建设网站开发公司是干嘛的