springSecurity 角色权限控制操作

后端代码

spring-security.xml配置文件


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:security="http://www.springframework.org/schema/security"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    



    
    
    <security:global-method-security pre-post-annotations="enabled" />

    

    
    <security:http security="none" pattern="/js/**" />
    <security:http security="none" pattern="/css/**" />
    
    <security:http pattern="/login.html" security="none"/>
    <security:http pattern="/fail.html" security="none"/>

    
    

    <security:http auto-config="true" use-expressions="true">

        
        
        <security:intercept-url pattern="/**"  access="isAuthenticated()" />

        
        <security:form-login
                login-page="/login.html"
                login-processing-url="/login"
                username-parameter="abc"
                password-parameter="bbb"
                authentication-failure-url="/fail.html"
                default-target-url="/index.html"
                always-use-default-target="true"
        />

        
        <security:csrf disabled="true"/>

        
        <security:logout logout-url="/logout"
                         logout-success-url="/login.html" invalidate-session="true"/>

    security:http>

    
    <security:authentication-manager>
        
        
        <security:authentication-provider user-service-ref="userService">
            <security:password-encoder ref="encoder"/>
            
            
        security:authentication-provider>
    security:authentication-manager>

    <bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

    
    <bean id="userService" class="com.heima.service.UserService"/>

beans>

Controller层

@Controller
@RequestMapping
public class UserController {
     

    @RequestMapping("/add")
    @PreAuthorize("hasAuthority('add')")//表示用户必须拥有add权限才能调用当前方法
    public String add(){
     
        System.out.println("add...");
        return "/success";
    }

    @RequestMapping("/update")
    @PreAuthorize("hasRole('ROLE_ADMIN')")//表示用户必须拥有ROLE_ADMIN角色才能调用当前方法
    public String update(){
     
        System.out.println("update...");
        return "/success";
    }

    @RequestMapping("/delete")
    @PreAuthorize("hasRole('ABC')")//表示用户必须拥有ABC角色才能调用当前方法
    public String delete(){
     
        System.out.println("delete...");
        return "/success";
    }

}

前端页面

注意:以下操作的必须是在jsp文件中。

在前端页面顶部添加如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="security"  uri="http://www.springframework.org/security/tags"%>

获取当前用户

当前用户:  

设置访问权限

只有ROLE_ADMIN角色才能访问

		-用户管理

标签的使用方法

<security:authorize>是一个流程控制标签,能够在满足特定安全需求的条件下显示它的内容体。它有三个互斥的参数: 
ifAllGranted——是一个由逗号分隔的权限列表,用户必须拥有所有列出的权限时显示; 
ifAnyGranted——是一个由逗号分隔的权限列表,用户必须至少拥有其中的一个权限时才能显示; 
ifNotGranted——是一个由逗号分隔的权限列表,用户未拥有所有列出的权限时才能显示。 
 
<security:authentication>获得属性的值
比如要获得用户名可以这么写: 
<security:authentication property="principal.username"></security:authentication> 
他有三个属性,property是必须的,另外scope和varvar定义一个变量,scope定义var存在的范围
例子:
有时需要在页面显示用户名,或者根据用户角色显示或者不显示一些内容。这需要使用到spring security提供的标签库。
在页面中引入标签库:

使用jstl表达式

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

你可能感兴趣的:(spring,security,java)