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

有哪些好的做问卷调查的网站互动型网站模板

有哪些好的做问卷调查的网站,互动型网站模板,网站分页符素材,企业邮箱号前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄,vue成神之路★ ★ 解决算法,一个专栏就够了★ ★ 架…

前言

在这里插入图片描述
「作者主页」:雪碧有白泡泡
「个人网站」:雪碧的个人网站
「推荐专栏」

java一站式服务
前端炫酷代码分享
uniapp-从构建到提升
从0到英雄,vue成神之路
解决算法,一个专栏就够了
架构咱们从0说
★ 数据流通的精妙之道★

★后端进阶之路★

请添加图片描述

文章目录

  • 前言
  • 1. 自定义认证和授权逻辑
    • 1.1 实现自定义的UserDetailsService接口
    • 1.2 扩展AbstractSecurityInterceptor类以自定义访问控制
  • 2. Spring Security注解
    • @PreAuthorize
    • @PostAuthorize
    • @Secured
    • @PreFilter
  • 5. 总结

在这里插入图片描述

1. 自定义认证和授权逻辑

在Spring Security中,我们可以自定义认证和授权逻辑来满足特定的需求。以下是两种常见的方法:

1.1 实现自定义的UserDetailsService接口

通过实现自定义的UserDetailsService接口,我们可以从数据库、LDAP或其他数据源中加载用户信息并进行认证。

@Service
public class CustomUserDetailsService implements UserDetailsService {@Autowiredprivate UserRepository userRepository;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {User user = userRepository.findByUsername(username);if (user == null) {throw new UsernameNotFoundException("User not found with username: " + username);}// 构建UserDetails对象并返回(通常使用User实体类的实例)return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(),user.isEnabled(), user.isAccountNonExpired(), user.isCredentialsNonExpired(),user.isAccountNonLocked(), user.getAuthorities());}
}

上述代码中,我们使用自定义的UserRepository从数据库中获取用户实体对象,并构建一个实现UserDetails接口的UserDetails对象。

1.2 扩展AbstractSecurityInterceptor类以自定义访问控制

通过扩展AbstractSecurityInterceptor类,我们可以实现基于自定义表达式的访问控制逻辑。

public class CustomSecurityInterceptor extends AbstractSecurityInterceptor implements Filter {// 通过注入自定义的AccessDecisionManager和AuthenticationManager实现类@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;HttpServletResponse httpResponse = (HttpServletResponse) response;// 创建FilterInvocation对象,表示当前过滤器链的调用FilterInvocation filterInvocation = new FilterInvocation(httpRequest, httpResponse, chain);// 执行授权过程invoke(filterInvocation);}@Overridepublic Class<?> getSecureObjectClass() {return FilterInvocation.class;}@Overridepublic SecurityMetadataSource obtainSecurityMetadataSource() {return null;}// 调用AccessDecisionManager执行访问控制逻辑@Overridepublic void invoke(FilterInvocation fi) throws IOException, ServletException {InterceptorStatusToken token = super.beforeInvocation(fi);try {// 执行下一个拦截器fi.getChain().doFilter(fi.getRequest(), fi.getResponse());} finally {super.afterInvocation(token, null);}}
}

上述代码中,我们通过扩展AbstractSecurityInterceptor类,并实现其相关方法,来自定义访问控制的逻辑。其中,invoke方法用于执行访问控制的逻辑,并调用AccessDecisionManager进行访问决策。

2. Spring Security注解

Spring Security提供了一系列注解,用于在代码中进行细粒度的权限控制和安全保护。以下是常用的注解及其作用:

@PreAuthorize

@PreAuthorize注解用于在方法执行之前对方法的调用进行权限验证。

@PreAuthorize("hasRole('ROLE_ADMIN')")
public void adminOnlyMethod() {// 只有具有ROLE_ADMIN角色的用户才能执行该方法
}

上述代码中,只有具有ROLE_ADMIN角色的用户才能成功调用adminOnlyMethod()方法。

@PostAuthorize

@PostAuthorize注解用于在方法执行之后对方法的返回值进行权限验证。

@PostAuthorize("returnObject.author == principal.username")
public Book getBook(String bookId) {// 根据bookId获取书籍对象,并返回
}

上述代码中,getBook()方法返回的Book对象将被验证,只有当Book对象的author与当前登录用户的用户名相同时,才能成功返回。

@Secured

@Secured注解用于对方法进行角色验证。

@Secured("ROLE_ADMIN")
public void adminOnlyMethod() {// 只有具有ROLE_ADMIN角色的用户才能执行该方法
}

上述代码中,只有具有ROLE_ADMIN角色的用户才能成功调用adminOnlyMethod()方法。

@PreFilter

@PreFilter注解用于在方法执行之前对方法的参数进行过滤,并对满足条件的参数进行权限验证。

@PreFilter("hasRole('ROLE_ADMIN') or filterObject.userId == principal.username")
public void updateUserInfo(List<User> userList) {// 根据userId更新用户信息
}

上述代码中,updateUserInfo()方法的userList参数将被过滤,只有其中的元素满足hasRole('ROLE_ADMIN') or filterObject.userId == principal.username条件才能执行相应操作。

5. 总结

综上所述,SpringSecurity提供了灵活的机制来自定义认证和授权逻辑,并通过注解提供了便捷的方式来实现细粒度的权限控制。结合这些功能,我们可以构建安全可靠的应用程序。
在这里插入图片描述

http://www.yayakq.cn/news/986384/

相关文章:

  • 建立网站需要哪些东西国家企业信用系统年报入口
  • 成都网站开发培训多少钱合肥关键词排名技巧
  • 专业网站制wordpress4.7 自豪
  • 个人网站设计怎么做手机苗木网站源码
  • 该网站无备案深圳制作网站有几家
  • 美发营销型网站wordpress保存文件路径
  • 专业做物业网站的公司洛阳网站制作哪家好
  • 福建建设厅官方网站西安专业做网站的公司有哪些
  • 网站建设源码导入开销售单的软件哪个好用
  • 成都大型网站建设公司门户网站开发简历
  • 毕设代做的网站wordpress网站监测
  • 朝阳网站开发制作微信公众号的网站开发
  • 上海软件培训网站建设网页设计需要什么技术
  • 建筑工程承包网app网站搜索引擎优化
  • 国外设计师作品网站网页设计技巧
  • 用阿里云做网站注意事项连云港东海县做网站
  • 网站开发好学嘛专业网站排名优化
  • 做网站选哪家公司店铺推广软文300字
  • 如何查看网站是否开启gzip做网站云服务器还是云虚拟主机
  • 深圳市建设注册执业资格中心网站河南搜索引擎优化
  • 淘宝联盟怎么建网站心雨在线高端网站建设专业
  • 网站开发就业前景如何制作动漫网站模板下载地址
  • 运城市做网站价格2345网站入口
  • 淮南网站建设全包正定网站制作
  • 学校网站建设实训总结克州建设工程信息网
  • 天津平台网站建设报价大兴网站建设首选公司
  • 电子商务网站建设 精品课程外贸最热门的十大产品
  • 毕业设计可以做网站吗网站建设基础大纲文案
  • 深圳网站设计公司费用设计机构网站
  • 做网站为什么要买服务器企业网站建设栏目结构图