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

专业网站制作公司地址制作网站要多少费用

专业网站制作公司地址,制作网站要多少费用,玉田县建设工程招标网站,市政府网站建设管理总结文章目录 一、基于权限的请求控制二、加载用户权限信息三、自定义异常处理四、注册自定义异常处理器五、总结 在开发Web应用时,权限管理是一个不可忽视的部分。最近在项目中,我使用了Spring Security来实现用户、权限、资源之间的精细化控制。这里我想分…

文章目录

    • 一、基于权限的请求控制
    • 二、加载用户权限信息
    • 三、自定义异常处理
    • 四、注册自定义异常处理器
    • 五、总结

在开发Web应用时,权限管理是一个不可忽视的部分。最近在项目中,我使用了Spring Security来实现用户、权限、资源之间的精细化控制。这里我想分享一下我的经验,希望对大家有所帮助。

一、基于权限的请求控制

首先,我们需要根据不同的资源路径设置相应的权限要求。以下是我的配置代码:

http.authorizeHttpRequests(authorize -> authorize.requestMatchers("/user/list").hasAuthority("USER_LIST").requestMatchers("/user/add").hasAuthority("USER_ADD")// 对所有请求开启授权保护.anyRequest()// 已认证请求会自动被授权.authenticated());

这段代码的含义是:

  • 访问/user/list的请求需要拥有USER_LIST权限。
  • 访问/user/add的请求需要拥有USER_ADD权限。
  • 其他所有请求都需要用户已认证(登录)。

通过这种方式,我们实现了资源路径与权限的直接绑定,确保只有具备特定权限的用户才能访问对应的资源。

二、加载用户权限信息

接下来,我们需要为用户加载其对应的权限信息。在Spring Security中,我们可以通过实现UserDetailsService接口来完成:

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(User::getUsername, username);User user = userMapper.selectOne(lambdaQueryWrapper);if (user == null) {throw new UsernameNotFoundException(username);} else {Collection<GrantedAuthority> authorities = new ArrayList<>();// 模拟为用户添加权限,实际项目中应从数据库获取用户的权限列表// authorities.add(() -> "USER_LIST");authorities.add(() -> "USER_ADD");return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(),user.getEnabled(),// 用户账号是否未过期true,// 用户凭证是否未过期true,// 用户是否未被锁定true,// 用户的权限列表authorities);}
}

在这个方法中,我们:

  1. 根据用户名从数据库中查询用户信息。
  2. 如果用户存在,创建一个权限列表authorities
  3. 为用户分配对应的权限(在实际应用中,应从数据库中获取用户的权限列表)。
  4. 返回一个包含用户名、密码、权限等信息的UserDetails对象。

通过这种方式,我们实现了用户与权限的关联,为后续的权限验证提供了基础。

三、自定义异常处理

当用户尝试访问未被授权的资源时,默认情况下会跳转到一个错误页面。为了提升用户体验,我们希望返回一个JSON格式的错误信息。这就需要自定义AccessDeniedHandler

public class MyAccessDeniedHandler implements AccessDeniedHandler {@Overridepublic void handle(HttpServletRequest request, HttpServletResponse response,AccessDeniedException accessDeniedException) throws IOException, ServletException {// 创建结果对象HashMap<String, Object> result = new HashMap<>();result.put("code", -1);result.put("message", "没有权限");// 转换成JSON字符串String json = JSON.toJSONString(result);// 返回响应response.setContentType("application/json;charset=utf-8");response.getWriter().println(json);}
}

这样,当用户没有权限访问某个资源时,会返回一个包含错误代码和提示信息的JSON对象,方便前端进行处理。

四、注册自定义异常处理器

最后,我们需要在Spring Security的配置中注册我们自定义的异常处理器:

http.exceptionHandling(exception -> {// 请求未认证的处理exception.authenticationEntryPoint(new MyAuthenticationEntryPoint());// 请求未授权的处理exception.accessDeniedHandler(new MyAccessDeniedHandler());
});

通过上述配置,Spring Security会在遇到认证或授权异常时,调用我们自定义的处理器,从而返回统一的错误信息。

image-20241008160219176

五、总结

通过以上步骤,我们实现了用户、权限、资源之间的精细化控制:

  • 用户:通过UserDetailsService加载用户信息和权限。
  • 权限:为用户分配特定的权限标识符,如USER_LISTUSER_ADD
  • 资源:通过requestMatchers指定资源路径,并绑定所需的权限。

这种用户-权限-资源的控制方式,能够有效地保障系统的安全性,确保只有具备相应权限的用户才能访问特定的资源。

http://www.tj-hxxt.cn/news/4006.html

相关文章:

  • 在线甜点订购网站开发需求分析谷歌广告平台
  • 网站建设不一定当地网络营销方式有哪些分类
  • 青海培训网站建设公司谷歌关键词搜索
  • 杭州网络游戏公司排名百度seo什么意思
  • 怎么查看网站是什么软件做的seo信息查询
  • 自己动手创建一个公司网站百度云搜索引擎入口盘搜搜
  • 网站建设有哪些软件网站运营指标
  • 免费的seo网站膝北京seo排名厂家
  • 网站建设字体变色代码产品推广渠道有哪些方式
  • 长沙大的建网站公司长沙市seo百度关键词
  • 中国建行官方网站郑州网站推广方案
  • 网站上线所需的东西哪里好优化大师破解版app
  • 故城网站建设惠州seo计费
  • 找合伙人做网站大数据是干什么的
  • 织梦 一键更新后网站空白如何自己弄一个网站
  • 深圳的网站建设公司排名上海优化seo
  • 低代码网站开发平台互联网营销专家
  • 专业的企业网站建设公司广州seo外包公司
  • 做网站需要学哪些软件seo外包顾问
  • 怎么在网站底部做备案号营销策划公司收费明细
  • 淘宝优惠劵做网站模版域名注册哪个网站好
  • 个人怎样注册网站西安seo外包
  • 淘宝客做网站怎么操作网址提交百度
  • 网站优化关键词百度seo排名工具
  • 京挑客网站怎么做网站关键词优化排名怎么做
  • 网站美工做专题尺寸多少快刷网站
  • 响应式网页设计与实现seo外链发布
  • 公司网站招聘费如何做会计分录哈尔滨百度网站快速优化
  • html个人介绍网页百度关键词优化软件排名
  • 淘宝客个人网站怎么做手机百度高级搜索入口