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

硬件开发一站式平台在线检测网站安全

硬件开发一站式平台,在线检测网站安全,重新装wordpress,做微博网站整合ShiroJwt大体思路 springboot整合shiro大体上的思路: 1.自定义一个类Realm extends AuthorizingRealm{} 主要是对token授权和认证 重写2个方法 doGetAuthorizationInfo //授权 doGetAuthenticationInfo //认证 认证 代码中手动加上对token校验的判断2.自…

整合Shiro+Jwt大体思路

springboot整合shiro大体上的思路:

1.自定义一个类Realm extends AuthorizingRealm{}

主要是对token授权和认证

重写2个方法

doGetAuthorizationInfo  //授权
doGetAuthenticationInfo  //认证
认证 代码中手动加上对token校验的判断

2.自定义一个@Configuration类ShiroConfig

ShiroConfig类主要做3个事情

将自定义的Realm注册bean

将realm对象与securityManager对象关联  

securityManager.setRealm(realm);

将securityManager对象与ShiroFilterFactoryBean对象关联

shiroFilterFactoryBean.setSecurityManager(getDefaultWebSecurityManager);

3.整合jwt

先定义公共类JwtUtils

其中定义三个方法 作用分别为token生成  token校验  token是否过期

在realm类的认证doGetAuthenticationInfo方法中调用JwtUtils解析token和登录用户是否满足条件

满足则返回AuthenticationInfo对象 对象中包含profile token name

(只需要定义个profile就好了  profile就是登录的用户信息  可以再定义一个用户实体类  把用户信息放入实体类中那这个对象类就是profile)

边学边整理思路  详细的得边敲边看代码

Shiro整合JWT的两种方式

1.通过URL进行权限控制:

  • 配置方式: 在Shiro的配置文件(通常是shiro.ini或shiro-config.xml)中配置URL路径与权限的映射关系。这个配置指定了哪些URL需要哪些权限。
<!-- shiro.ini或shiro-config.xml配置示例 -->
<property name="filterChainDefinitions"><!-- URL路径与权限的映射关系 -->/admin/** = roles[admin], perms["user:delete"]/user/** = authc
</property>

代码示例: 在Java代码中,只需配置Shiro的FilterChainDefinitionMap,将URL路径和权限映射起来。

Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
filterChainDefinitionMap.put("/admin/**", "roles[admin]");
filterChainDefinitionMap.put("/user/**", "authc");

特点:

  • 静态配置:权限规则在配置文件中静态定义,不易动态改变。
  • 适用于简单的权限需求,不需要频繁修改权限规则。

2.通过注解进行权限控制:

  • 配置方式: 在需要进行权限控制的Controller类或方法上使用Shiro提供的注解,如@RequiresRoles@RequiresPermissions
@Controller
@RequestMapping("/admin")
public class AdminController {@RequiresRoles("admin")@GetMapping("/view")public String adminView() {// 处理业务逻辑return "admin/view";}
}

特点:

  • 动态控制:权限规则可以根据方法的注解动态变化,不需要重新配置。
  • 精细控制:可以根据方法级别的注解进行更精细的权限控制。

3.配置文件和注解的关系:

  • 在项目中,通常会将基本的URL路径与权限的映射关系配置在配置文件中,这些是项目的基础权限。然后,通过注解在Controller中进行更精细的权限控制,例如,限制某个Controller的某个方法需要特定的角色或权限。
<!-- shiro.ini或shiro-config.xml配置示例 -->
<property name="filterChainDefinitions"><!-- URL路径与基本权限的映射关系 -->/admin/** = roles[admin], perms["user:delete"]/user/** = authc
</property>
@Controller
@RequestMapping("/admin")
public class AdminController {@RequiresRoles("admin")@GetMapping("/view")public String adminView() {// 处理业务逻辑return "admin/view";}
}
  1. 这种组合方式可以实现项目中灵活的权限控制,基本权限由配置文件定义,而特殊权限由注解在代码中控制,使得权限管理更加清晰和可维护。

通过这种组合方式,您可以在项目中实现动态和精细的权限管理,同时保持基本权限的静态配置,以适应不同的权限需求。

对比说明

1. 通过URL进行权限控制:

首先,配置Shiro的过滤器和URL拦截规则,然后在控制器中添加注解。

Shiro配置文件 (shiro.ini 或 shiro-config.xml):

<!-- 配置JWTFilter,用于处理JWT的生成、解析和验证 -->
<bean id="jwtFilter" class="com.example.JWTFilter"></bean><!-- 配置Shiro过滤器链 -->
<filter-mappings><filter-name>jwtFilter</filter-name><url-pattern>/api/**</url-pattern>
</filter-mappings>

控制器 (AdminController.java):

@Controller
@RequestMapping("/admin")
public class AdminController {// 需要admin:view权限才能访问@GetMapping("/view")public String view() {return "admin/view";}// 其他业务方法
}

2. 通过注解进行权限控制:

在控制器方法上添加Shiro的注解来声明需要的角色或权限。

控制器 (AdminController.java):

@Controller
@RequestMapping("/admin")
public class AdminController {@RequiresPermissions("admin:view") // 使用注解声明需要admin:view权限@GetMapping("/view")public String view() {return "admin/view";}// 其他业务方法
}

上述代码演示了通过URL控制和通过注解控制权限的两种方式。通过URL控制更加基于URL模式,适用于相对简单的权限需求,可以在配置文件中进行集中管理。通过注解控制更加直观,能够明确指定每个方法的权限要求,适用于需要细粒度控制的情况。

合二为一:

Shiro配置文件 (shiro.ini 或 shiro-config.xml):

<!-- 配置JWTFilter,用于处理JWT的生成、解析和验证 -->
<bean id="jwtFilter" class="com.example.JWTFilter"></bean><!-- 配置Shiro过滤器链 -->
<filter-mappings><filter-name>jwtFilter</filter-name><url-pattern>/api/**</url-pattern>
</filter-mappings>

控制器 (AdminController.java):(注意两种方式代码基本一致,只是注释有区别)

@Controller
@RequestMapping("/admin")
public class AdminController {@RequiresPermissions("admin:view") // 使用注解声明需要admin:view权限@GetMapping("/view")public String view() {return "admin/view";}// 其他业务方法,例如编辑管理员信息,需要admin:edit权限@RequiresPermissions("admin:edit")@GetMapping("/edit")public String edit() {return "admin/edit";}// 删除管理员,需要admin:delete权限@RequiresPermissions("admin:delete")@GetMapping("/delete")public String delete() {return "admin/delete";}// 其他业务方法
}

在上述示例中,我们添加了更多的业务方法,如编辑管理员信息和删除管理员,并使用Shiro的@RequiresPermissions注解明确指定每个方法需要的权限要求。例如,edit方法需要admin:edit权限,delete方法需要admin:delete权限。

http://www.ds6.com.cn/news/25051.html

相关文章:

  • 做二手车放在哪个网站好营销咨询顾问
  • 深圳外贸建站与推广网络推广方法有哪些
  • 怎么样建立网站方案自动化测试培训机构哪个好
  • 网站导航cms友情链接分析
  • 游戏开发大亨内购破解版兰州seo实战优化
  • wordpress区别百度seo关键词排名技术
  • 什么网站可以做直播专业seo优化公司
  • 海外高端网站建设seo综合查询站长工具关键词
  • 国外b2b网站毛片长春seo优化企业网络跃升
  • 做详情页网站app推广拉新工作可靠吗
  • vs做网站连数据库石家庄疫情防控最新政策
  • 北京网站建设手机app软文自动发布软件
  • 二手车为什么做网站外贸推广如何做
  • 自己建网站需要什么软件营销型网站模板
  • 网站首页优化安徽网站推广公司
  • 网站智能建设系统源码产品宣传推广方案
  • 兰州市做网站建设的公司域名站长工具
  • 分分作网站模板建站和开发网站区别
  • 网页设计与网站建设在线测试答案百度关键词价格查询
  • wordpress yeti泰州百度seo公司
  • 网站图片加载 优化百度问答官网
  • 黄埔企业网站建设上海seo网站优化软件
  • 投资公司注册需要多少注册资金键词优化排名
  • 烟台房地产网站建设网站关键词优化应该怎么做
  • 沧州网站的公众号怎么发外链
  • 何做百度推广网站企业网站大全
  • k2搭建wordpressseo网站优化方案摘要
  • 中国房地产排名100强百度seo推广怎么做
  • 网站如何知道是谁做的呢某产品网络营销推广方案
  • 浦项建设内部网站成免费的crm