SpringSecurity匿名用户访问权限

本文详细介绍了如何在SpringSecurity中配置匿名访问权限,使未登录用户能够访问特定页面。通过XML配置示例,展示了如何设置/cart/**目录下页面的匿名访问,并介绍了如何获取当前用户的访问用户名,包括已登录用户的登录ID和未登录用户的UUID。

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

在SpringSecurity中定义一个匿名访问权限,实现未登录用户可以访问默写页面

1     <http use-expressions="false" entry-point-ref="casProcessingFilterEntryPoint">
2        <intercept-url pattern="/cart/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
3         <intercept-url pattern="/**" access="ROLE_USER"/>  
4         <custom-filter position="CAS_FILTER" ref="casAuthenticationFilter" />  
5         <custom-filter ref="requestSingleLogoutFilter" before="LOGOUT_FILTER"/>  
6         <custom-filter ref="singleLogoutFilter" before="CAS_FILTER"/>  
7     </http>

就是在第2行添加的内容。此处的意思是所有的/cart/**目录下的都可以访问,并且用户名统一为annonymousUser

结合SpringSecurity的匿名用户未登录访问和登录访问的判断

下方代码目的是用来获取当前用户的访问用户名

1、如果已登录返回用户的登录id

2、未登录为当前用户创建一个UUID存入Cookie中并返回该Cookie的UUID

    /**
     * 准备方法获取cookie中的uuid,如果cookie中没有uuid生成uuid并保存到cookie中
     */
    public String getUuid(){
        String uuid = CookieUtil.getCookieValue(request, "uuid","utf-8");

        //从cookie中获取的uuid为null或者有具体的值
        if(uuid == null || uuid.equals("")){
            uuid = UUID.randomUUID().toString(); //XXXX-XXXX-XXXXXXXXX
            //将生成的uuid存入cookie中
            CookieUtil.setCookie(request, response, "uuid", uuid,48*60*60, "utf-8");
        }
        return uuid;
    }
    
    public String getUserID{
        String userId = SecurityContextHolder.getContext().getAuthentication().getName(); //从springSecurity获取当前用户
        //判断是否登录,如果未登录,返回UUID,如果已登录返回用户登录名
        if("anonymousUser".equals(userId)){
            userId = getUuid(); //cookie中获取uuid作为唯一key值
        }
        return userId;
    }

 

转载于:https://www.cnblogs.com/kitor/p/11287502.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值