仿牛客社区——7.3权限控制

该文介绍了如何使用SpringSecurity进行用户权限控制,包括废弃拦截器,采用SpringSecurity的授权配置,自定义认证方案以绕过默认流程但保留权限信息,以及防止CSRF攻击的配置。在配置中,设置了不同的权限级别,并处理了未登录和权限不足的情况,同时展示了如何在异步请求中处理CSRFtoken。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现功能

采用SpringSecurity进行用户的权限控制管理

登录检查

- 之前采用拦截器实现了登录检查,这是简单的权限管理方案,现在将其废弃。

授权配置

- 对当前系统内包含的所有的请求,分配访问权限 (普通用户、版主、管理员)

认证方案

-绕过Security认证流程,采用系统原来的认证方案

注意:

关于认证:该项目未走security的认证方式,而是走自己实现的认证方式。

 在security中进行认证时,是将认证信息封装进UsernamePasswordAuthenticationToken(如果认证信息是账号密码)中  ,而security底层的filter会将token存到securityContext中。

后面对用户进行权限判断时,要从securityContext中取出认证过的授权信息 。

这里我们需要绕过security底层认证逻辑,但是还要取到用户的权限信息,所以我们提供一个获取用户权限的方法,将用户权限在存入securityContex中 。

CSRF配置

-防止 CSRF 攻击的基本原理,以及表单、AJAX相关的配置

csrf攻击是指某网站盗取用户的cookie中的凭证,冒充用户身份去访问服务器并向表单中提交数据。

发生在提交表单时,springsecurity解决方案:springsecurity在服务器向浏览器返回表单时,会返回一个隐藏的token(凭证),每次token都是随机的。

Code

首先向该项目中增加一些常量,用来赋予用户权限(写在了常量接口CommunityConstant中)

/**
 * 权限:普通用户
 */
String AUTHORITY_USER="user";
/**
 * 权限:管理员
 */
String AUTHORITY_ADMIN="admin";
/**
 * 权限:版主
 */
String AUTHORITY_MODERATOR="moderator";

SecurityConfig

import com.light.community.util.CommunityConstant;
import com.light.community.util.CommunityUtil;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.access.AccessDeniedHandler;

import javax.servlet.ServletException;
import javax.servlet.http
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值