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

青岛网站设计企业佛山网站建设thual

青岛网站设计企业,佛山网站建设thual,网页设计实训心得体会300字,wordpress云储存前言 「作者主页」#xff1a;雪碧有白泡泡 「个人网站」#xff1a;雪碧的个人网站 「推荐专栏」#xff1a; ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄#xff0c;vue成神之路★ ★ 解决算法#xff0c;一个专栏就够了★ ★ 架…前言 「作者主页」雪碧有白泡泡 「个人网站」雪碧的个人网站 「推荐专栏」 ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄vue成神之路★ ★ 解决算法一个专栏就够了★ ★ 架构咱们从0说★ ★ 数据流通的精妙之道★ ★后端进阶之路★ 文章目录 前言引言1. 定义用户使用内存方式定义用户使用数据库方式定义用户 2. 定义角色创建角色并将其与用户关联解释如何使用角色来组织和控制权限 3. 定义权限4. 访问规则使用Ant风格的路径匹配规则使用表达式语言进行更复杂的访问规则定义 小结 引言 继上篇后端进阶之路——深入理解Spring Security配置二 1. 定义用户 使用内存方式定义用户 在内存中定义用户是一种简单的方法适用于开发和测试环境。我们可以在Spring Security的配置类中使用InMemoryUserDetailsManager来定义用户。下面是一个示例 Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().withUser(user).password({noop}password) // 使用 {noop} 前缀表示密码不加密.roles(USER);}Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().anyRequest().authenticated().and().formLogin();} }上述示例中使用withUser方法定义了一个用户名为user密码为password角色为USER的用户。注意密码的前缀{noop}表示密码不加密这只适用于开发和测试环境。 使用数据库方式定义用户 在实际生产环境中通常会将用户信息存储在数据库中。使用数据库方式定义用户需要进行以下步骤 创建数据库表格来存储用户信息例如表格名为users包含列username、“password和role”。配置Spring Security以连接到数据库并使用数据库中的用户信息进行认证和授权。 下面是一个使用数据库方式定义用户的示例 Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Autowiredprivate DataSource dataSource;Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.jdbcAuthentication().dataSource(dataSource).usersByUsernameQuery(SELECT username, password, enabled FROM users WHERE username?).authoritiesByUsernameQuery(SELECT username, role FROM users WHERE username?);}Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().anyRequest().authenticated().and().formLogin();} }上述示例中通过dataSource注入了数据源然后使用jdbcAuthentication配置了基于数据库的认证和授权。.usersByUsernameQuery()方法指定了查询用户名、密码和启用状态的SQL语句.authoritiesByUsernameQuery()方法指定了查询用户名和角色的SQL语句。 2. 定义角色 在Spring Security中可以使用角色来组织和控制权限。角色是一组权限的集合可以通过将角色与用户关联来授予用户相应的权限。 以下是在Spring Security中定义角色并将其与用户关联的示例代码 创建角色并将其与用户关联 Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Autowiredprivate DataSource dataSource;Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.jdbcAuthentication().dataSource(dataSource).usersByUsernameQuery(SELECT username, password, enabled FROM users WHERE username?).authoritiesByUsernameQuery(SELECT username, role FROM users WHERE username?);}Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers(/admin/**).hasRole(ADMIN) // 需要ADMIN角色才能访问/admin/**路径.anyRequest().authenticated().and().formLogin();} }在上述示例中.antMatchers(/admin/**).hasRole(ADMIN)指定了只有拥有ADMIN角色的用户才能访问/admin/**路径。这样我们可以根据不同的角色来限制用户对某些资源的访问权限。 解释如何使用角色来组织和控制权限 在Spring Security中可以使用角色来定义访问控制规则并使用这些规则来保护应用程序的不同部分。通过为用户分配不同的角色可以实现对不同用户的权限控制。 以下是一个使用角色进行权限控制的示例代码 Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Autowiredprivate DataSource dataSource;Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.jdbcAuthentication().dataSource(dataSource).usersByUsernameQuery(SELECT username, password, enabled FROM users WHERE username?).authoritiesByUsernameQuery(SELECT username, role FROM users WHERE username?);}Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers(/admin/**).hasRole(ADMIN) // 需要ADMIN角色才能访问/admin/**路径.antMatchers(/user/**).hasRole(USER) // 需要USER角色才能访问/user/**路径.anyRequest().authenticated().and().formLogin();} }上述示例中使用.antMatchers(/admin/**).hasRole(ADMIN)和.antMatchers(/user/**).hasRole(USER)定义了不同路径需要不同角色的访问权限。只有拥有相应角色的用户才能访问对应的路径。 3. 定义权限 权限是指在系统中对特定资源或操作进行访问控制的能力。它是用于确保只有经过授权的用户或角色才能执行某些敏感操作或访问某些受限资源的机制。权限的定义和管理对于确保系统的安全性和保护重要数据非常重要。 在Spring Security中我们可以使用PreAuthorize、PostAuthorize和Secured等注解来定义权限。这些注解可以放置在方法上用于限制只有具有特定权限的用户才能调用该方法。 下面是一个示例演示了如何在Spring Security中定义权限 首先确保你已经添加了Spring Security的依赖到你的项目中。 !-- pom.xml -- dependencies...dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactId/dependency... /dependencies接下来创建一个自定义的权限验证类。 import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Component;Component public class MyAuthorization {PreAuthorize(hasRole(ROLE_ADMIN))public void adminOnly() {// 只有具有ROLE_ADMIN角色的用户才能调用此方法}PreAuthorize(hasAuthority(WRITE_PERMISSION))public void writeAccess() {// 只有具有WRITE_PERMISSION权限的用户才能调用此方法}}在上述代码中MyAuthorization类包含了两个方法adminOnly()和writeAccess()。这两个方法都使用了PreAuthorize注解来定义权限。 hasRole(ROLE_ADMIN)表示只有具有ROLE_ADMIN角色的用户才能调用adminOnly()方法。 hasAuthority(WRITE_PERMISSION)表示只有具有WRITE_PERMISSION权限的用户才能调用writeAccess()方法。 然后在你的业务逻辑中可以通过依赖注入的方式使用MyAuthorization类并调用相应的方法。 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;Service public class MyService {private final MyAuthorization myAuthorization;Autowiredpublic MyService(MyAuthorization myAuthorization) {this.myAuthorization myAuthorization;}public void doSomething() {myAuthorization.adminOnly(); // 调用需要admin权限的方法myAuthorization.writeAccess(); // 调用需要writeAccess权限的方法}}在上述代码中MyService类依赖注入了MyAuthorization类并在doSomething()方法中调用了其中的两个方法。 4. 访问规则 当使用Spring Security进行访问控制时可以通过Ant风格的路径匹配规则和表达式语言来定义更复杂的访问规则。下面是一些示例代码片段用于说明如何使用这些规则 使用Ant风格的路径匹配规则 Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers(/admin/**).hasRole(ADMIN).antMatchers(/user/**).hasAnyRole(USER, ADMIN).anyRequest().authenticated().and().formLogin().and().httpBasic();} }在上述代码中我们使用authorizeRequests()方法来配置路径的访问规则。.antMatchers()方法用于指定要匹配的路径模式并使用hasRole()或hasAnyRole()方法指定需要具有的角色。在这个例子中如果请求的路径以/admin/开头则用户需要具有ADMIN角色。 使用表达式语言进行更复杂的访问规则定义 Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().expressionHandler(expressionHandler()).antMatchers(/admin/**).access(hasRole(ADMIN) or hasIpAddress(127.0.0.1)).anyRequest().authenticated().and().formLogin().and().httpBasic();}Beanpublic DefaultWebSecurityExpressionHandler expressionHandler() {DefaultWebSecurityExpressionHandler expressionHandler new DefaultWebSecurityExpressionHandler();expressionHandler.setRoleHierarchy(roleHierarchy());return expressionHandler;}Beanpublic RoleHierarchy roleHierarchy() {RoleHierarchyImpl roleHierarchy new RoleHierarchyImpl();roleHierarchy.setHierarchy(ROLE_ADMIN ROLE_USER);return roleHierarchy;} }在上述代码中我们使用.access()方法来定义更复杂的访问规则。这里我们使用表达式语言可以通过hasRole()和hasIpAddress()等方法来判断用户是否有权限访问路径。在这个例子中如果请求的路径以/admin/“开头并且用户具有ADMIN角色或者IP地址为127.0.0.1”则允许访问。 另外我们还使用DefaultWebSecurityExpressionHandler和RoleHierarchyImpl来配置角色层次关系。在这个例子中ROLE_ADMIN角色被认为是ROLE_USER角色的父角色因此具有ROLE_ADMIN角色的用户也将被授予ROLE_USER角色的权限。 小结 通过定义用户、角色、权限和访问规则 可以在SpringSecurity中实现灵活的访问控制和权限管理。可以使用内存方式或数据库方式定义用户设置用户名、密码和角色等信息。角色可以用来组织和控制权限可以将一组权限赋予特定角色并将角色分配给用户。权限是指用户可以执行的特定操作或访问的资源可以细化到每个功能或数据级别。可以使用Ant风格的路径匹配规则或表达式语言编写更复杂的访问规则以限制用户对特定路径或功能的访问权限。 通过定义这些元素可以确保系统的安全性和可靠性。
http://www.zqtcl.cn/news/326585/

相关文章:

  • 网站制作价格与售后视频网站建设有什么意义
  • 网站建设+太原1核1g可以做几个网站
  • 电商设计网站有哪些内容西安百度推广外包
  • 深圳网站建设价格多少做废旧金属的网站
  • wordpress 文档超级优化空间
  • 湖北seo网站推广官方网站怎么制作
  • 随州网站seo诊断wordpress 只显示一个主题
  • 建站登录可信网站认证 费用
  • 互站网站源码用jsp做网站一般会用到什么
  • 个人免费设计网站fomo3d 网站怎么做
  • 菏泽做网站公司公关公司经营范围
  • 钓鱼网站营销型网站建设实战
  • 可以下载电影的网站怎么做做网站公司西安
  • 自己做签名网站网店美工培训教程
  • 宁波产品网站设计模板php 网站 教程
  • 制作一个网站的费用是多少免费网站空间怎么
  • 如何建立自己的微网站网站建设教程怎么建
  • seo网站项目讲解沈阳网红
  • 苏州大型网站建设公司网站外链优化
  • 阿里云购买域名后怎么建网站沂南网站设计
  • 网站建设基础考试php网站开发入门
  • 广州五屏网站建设seo诊断报告示例
  • 周浦高端网站建设公司信阳做网站的公司
  • 博客网站怎么建设湛江新闻头条最新消息
  • 外贸网站建设 评价有没有教做网站实例视频
  • 县 住房和城乡建设局网站wordpress接入支付宝
  • 网站建设初期推广方式天津网站建设案例
  • 销项税和进项导入是在国税网站做吗凡科网站模块
  • 苏州建网站皆去苏州聚尚网络常州企业建站系统
  • 网站建设明细wordpress 主题稳定