• SpringSecurity


    目录

    1、SpringSecurity概述

    1.1、什么是SpringSecurity

    2、SpringSecurity快速入门

    2.1、创建测试web工程

    2.2、配置pom.xml文件

    2.3、环境配置

    2.4、启动tomcat测试

    3、自定义登录页面

    3.1、环境搭建

    3.2、创建实体类

    3.3、创建数据库

    3.4、创建UserService接口

    3.5、创建UserMapper接口

    3.6、创建UserMapper映射文件

    4、权限控制

    4.1、方法级别权限控制

    4.1.1、jsr250注解方式

    4.1.2、@Secured注解

    4.1.3、表达式注解

    4.2、页面端权限控制

    4.2.1、导入Maven坐标

    4.2.2、在jsp页面导入核心库

    4.2.3、常用标签

    4.2.4、展示登录的用户名

    4.2.5、注意事项


    1、SpringSecurity概述

    1.1、什么是SpringSecurity

    Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。

    (Spring Security) Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。人们使用Spring Security有很多种原因,不过通常吸引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。特别要指出的是他们不能再WAR 或 EAR 级别进行移植。这样,如果你更换服务器环境,就要,在新的目标环境进行大量的工作,对你的应用系统进行重新配置安全。使用Spring Security 解决了这些问题,也为你提供很多有用的,完全可以指定的其他安全特性。安全包括两个主要操作:认证授权

    认证,是为用户建立一个他所声明的主体。主题一般式指用户,设备或可以在你系统中执行动作的其他系统。(简单来说:系统认为用户是否能登录)

    授权指的是一个用户能否在你的应用中执行某个操作,在到达授权判断之前,身份的主题已经由身份验证过程建立了。(简单来说:系统判断用户是否有权限去做某些事情)

    这些概念是通用的,不是Spring Security特有的。在身份验证层面,Spring Security广泛支持各种身份验证模式,这些验证模型绝大多数都由第三方提供,或则正在开发的有关标准机构提供的,例如 Internet Engineering TaskForce作为补充,Spring Security 也提供了自己的一套验证功能。

    2、SpringSecurity快速入门

    2.1、创建测试web工程

    2.2、配置pom.xml文件

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0modelVersion>
    5. <groupId>cn.itssl.springmvcgroupId>
    6. <artifactId>springmvc_springsecurityartifactId>
    7. <version>1.0-SNAPSHOTversion>
    8. <packaging>warpackaging>
    9. <properties>
    10. <spring.version>5.2.9.RELEASEspring.version>
    11. <spring.security.version>5.2.9.RELEASEspring.security.version>
    12. properties>
    13. <dependencies>
    14. <dependency>
    15. <groupId>org.springframeworkgroupId>
    16. <artifactId>spring-coreartifactId>
    17. <version>${spring.version}version>
    18. dependency>
    19. <dependency>
    20. <groupId>org.springframeworkgroupId>
    21. <artifactId>spring-webartifactId>
    22. <version>${spring.version}version>
    23. dependency>
    24. <dependency>
    25. <groupId>org.springframeworkgroupId>
    26. <artifactId>spring-webmvcartifactId>
    27. <version>${spring.version}version>
    28. dependency>
    29. <dependency>
    30. <groupId>org.springframeworkgroupId>
    31. <artifactId>spring-context-supportartifactId>
    32. <version>${spring.version}version>
    33. dependency>
    34. <dependency>
    35. <groupId>org.springframeworkgroupId>
    36. <artifactId>spring-testartifactId>
    37. <version>${spring.version}version>
    38. dependency>
    39. <dependency>
    40. <groupId>org.springframeworkgroupId>
    41. <artifactId>spring-jdbcartifactId>
    42. <version>${spring.version}version>
    43. dependency>
    44. <dependency>
    45. <groupId>org.springframework.securitygroupId>
    46. <artifactId>spring-security-webartifactId>
    47. <version>${spring.security.version}version>
    48. dependency>
    49. <dependency>
    50. <groupId>org.springframework.securitygroupId>
    51. <artifactId>spring-security-configartifactId>
    52. <version>${spring.security.version}version>
    53. dependency>
    54. <dependency>
    55. <groupId>javax.servletgroupId>
    56. <artifactId>javax.servlet-apiartifactId>
    57. <version>3.1.0version>
    58. <scope>providedscope>
    59. dependency>
    60. dependencies>
    61. project>

    2.3、环境配置

    web.xml

    1. "1.0" encoding="UTF-8"?>
    2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    5. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    6. version="3.0">
    7. <context-param>
    8. <param-name>contextConfigLocationparam-name>
    9. <param-value>classpath:spring-security.xmlparam-value>
    10. context-param>
    11. <listener>
    12. <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    13. listener>
    14. <filter>
    15. <filter-name>springSecurityFilterChainfilter-name>
    16. <filter-class>org.springframework.web.filter.DelegatingFilterProxyfilter-class>
    17. filter>
    18. <filter-mapping>
    19. <filter-name>springSecurityFilterChainfilter-name>
    20. <url-pattern>/*url-pattern>
    21. filter-mapping>
    22. web-app>

     spring-security.xml

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:security="http://www.springframework.org/schema/security"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd">
    6. <security:http auto-config="true" use-expressions="false">
    7. <security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN"/>
    8. security:http>
    9. <security:authentication-manager>
    10. <security:authentication-provider>
    11. <security:user-service>
    12. <security:user name="user" password="{noop}user"
    13. authorities="ROLE_USER" />
    14. <security:user name="admin" password="{noop}admin"
    15. authorities="ROLE_ADMIN" />
    16. security:user-service>
    17. security:authentication-provider>
    18. security:authentication-manager>
    19. beans>

    2.4、启动tomcat测试

    启动tomcat,可以发现我们并没有写任何页面,为什么会出现一个登录页面呢?这是因为springSecurity安全框架底层为我们提供的页面,并且我们可以通过这个页面去登录,在spring-security配置文件中我们配置了两个账号,一个是user,一个是admin,我们就可以在页面进行登录验证。

    输入user或admin其中一个,进行登录验证

    登录成功,注意:这里的Hello World页面并不是我们本地的index.jsp页面,也是安全框架为我们写好的成功页面

    3、自定义登录页面

    以上我们进行了一个简单的快速入门,不过是安全框架自带的登录,那我们以后做自己的项目,如何用安全框架呢?

    3.1、环境搭建

    login.html页面,需要特别注意的是:这里面的username和password填入框的name属性必须为username和password,因为安全框架后台去接收的时候会根据这两个名字,如果不是这两个名字,则接收不到。

    login页面根据自己的项目编写,这里我就不提供了。 

    配置spring-security配置文件

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:security="http://www.springframework.org/schema/security"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd">
    6. <security:http pattern="/login.jsp" security="none"/>
    7. <security:http pattern="/failer.jsp" security="none"/>
    8. <security:http pattern="/css/**" security="none"/>
    9. <security:http pattern="/img/**" security="none"/>
    10. <security:http pattern="/plugins/**" security="none"/>
    11. <security:http auto-config="true" use-expressions="false">
    12. <security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN"/>
    13. <security:form-login login-page="/login.jsp"
    14. login-processing-url="/login"
    15. authentication-failure-url="/failer.jsp"
    16. default-target-url="/index.jsp"
    17. authentication-success-forward-url="/pages/main.jsp"/>
    18. <security:csrf disabled="true" />
    19. <security:logout invalidate-session="true" logout-url="/logout" logout-success-url="/login.jsp" />
    20. security:http>
    21. <security:authentication-manager>
    22. <security:authentication-provider user-service-ref="userService">
    23. security:authentication-provider>
    24. security:authentication-manager>
    25. beans>

    web.xml文件与之前的一样,不用改变。

    3.2、创建实体类

     UserInfo类

    1. @Data
    2. public class UserInfo {
    3. private String id;
    4. private String username;
    5. private String email;
    6. private String password;
    7. private String phoneNum;
    8. private int status;
    9. private String statusStr;
    10. private List roles;
    11. public String getStatusStr() {
    12. if (this.status == 1) {
    13. return this.statusStr = "开启";
    14. }
    15. if (this.status == 0) {
    16. return this.statusStr = "禁用";
    17. }
    18. return this.statusStr = " ";
    19. }
    20. }

     Role类

    1. @Data
    2. public class Role {
    3. private String id;
    4. private String roleName;
    5. private String roleDesc;
    6. private List permissions;
    7. private List users;
    8. }

    3.3、创建数据库

    users

    1. CREATE TABLE `users` (
    2. `id` int(11) NOT NULL AUTO_INCREMENT,
    3. `email` varchar(50) NOT NULL,
    4. `username` varchar(255) DEFAULT NULL,
    5. `password` varchar(255) DEFAULT NULL,
    6. `phoneNum` varchar(20) DEFAULT NULL,
    7. `status` int(11) DEFAULT NULL COMMENT '状态0 未开启 1 开启',
    8. PRIMARY KEY (`id`) USING BTREE
    9. ) ENGINE=InnoDB AUTO_INCREMENT=20629 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

     role

    1. CREATE TABLE `role` (
    2. `id` int(11) NOT NULL AUTO_INCREMENT,
    3. `roleName` varchar(255) DEFAULT NULL,
    4. `roleDesc` varchar(255) DEFAULT NULL,
    5. PRIMARY KEY (`id`) USING BTREE
    6. ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

    3.4、创建UserService接口

    继承UserDetailsService接口,这个接口就是安全框架为我们提供的

    1. public interface UserService extends UserDetailsService {
    2. }

    创建实现类,实现UserService类,重写UserService接口继承的UserDetailsService接口下的方法loadUserByUsername 

    1. @Service("userService")
    2. public class UserServiceImpl implements UserService {
    3. @Autowired
    4. private UserMapper userMapper;
    5. /**
    6. * @description:查询用户
    7. * @param: [s]
    8. * @return: org.springframework.security.core.userdetails.UserDetails
    9. **/
    10. @Override
    11. public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
    12. UserInfo userInfo = userMapper.findUserByUserName(s);
    13. User user = new User(
    14. userInfo.getUsername(),//用户账号
    15. "{noop}"+userInfo.getPassword(),//用户密码 使用明文
    16. userInfo.getStatus()==0?false:true,//校验用户是否开启
    17. true,//账号是否过期 不过期
    18. true,//账号 不过期
    19. true,//账号 不锁定
    20. getAuthority(userInfo.getRoles()));
    21. return user;
    22. }
    23. /**
    24. * @description:查询用户的角色
    25. * @param: []
    26. * @return: java.util.List
    27. **/
    28. private List getAuthority(List roles) {
    29. List list = new ArrayList<>();
    30. for (Role role : roles) {
    31. list.add(new SimpleGrantedAuthority("ROLE_"+role.getRoleName()));
    32. }
    33. return list;
    34. }
    35. }
    1. public interface UserMapper {
    2. /**
    3. * @description:查询用户
    4. * @param: [s]
    5. * @return: cn.itssl.pojo.UserInfo
    6. **/
    7. UserInfo findUserByUserName(String s);
    8. }

    3.5、创建UserMapper接口

    1. public interface UserMapper {
    2. /**
    3. * @description:查询用户
    4. * @param: [s]
    5. * @return: cn.itssl.pojo.UserInfo
    6. **/
    7. UserInfo findUserByUserName(String s);
    8. }

    3.6、创建UserMapper映射文件

    1. "1.0" encoding="UTF-8" ?>
    2. mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="cn.itssl.mapper.UserMapper">
    6. <resultMap id="findUserResult" type="UserInfo" autoMapping="true">
    7. <id property="id" column="id"/>
    8. <collection property="roles" javaType="List" ofType="Role" autoMapping="true">
    9. <id property="id" column="id"/>
    10. collection>
    11. resultMap>
    12. <select id="findUserByUserName" resultMap="findUserResult">
    13. select *
    14. from users u,
    15. role r,
    16. users_role ur
    17. where
    18. u.id = ur.userId
    19. and
    20. r.id = ur.roleId
    21. and
    22. username = #{s};
    23. select>
    24. mapper>

    启动tomcat以后,会自动进入login.jsp页面 

    输入正确的用户和密码,则就进入了后台系统。

    输入用户密码错误的话,则报错提示

    4、权限控制

    4.1、方法级别权限控制

    4.1.1、jsr250注解方式

    导入jsr250注解的依赖

    1. <dependency>
    2. <groupId>javax.annotationgroupId>
    3. <artifactId>jsr250-apiartifactId>
    4. <version>1.0version>
    5. dependency>

    在springmvc-config.xml配置文件中开启jsr250注解

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xmlns:security="http://www.springframework.org/schema/security"
    6. xmlns:aop="http://www.springframework.org/schema/aop"
    7. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">
    8. <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    9. <property name="prefix" value="/pages/"/>
    10. <property name="suffix" value=".jsp"/>
    11. bean>
    12. <mvc:annotation-driven/>
    13. <context:component-scan base-package="cn.itssl.*"/>
    14. <mvc:default-servlet-handler/>
    15. <mvc:annotation-driven>
    16. <mvc:message-converters>
    17. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    18. <property name="supportedMediaTypes">
    19. <list>
    20. <value>text/html;charset=utf-8value>
    21. list>
    22. property>
    23. bean>
    24. mvc:message-converters>
    25. mvc:annotation-driven>
    26. <security:global-method-security jsr250-annotations="enabled"/>
    27. beans>
    注解说明
    @RolesAllowed表示访问对应方法时所应该具有的角色
    @PermitAll表示允许所有的角色进行访问,也就是说不进行权限控制
    @DenyAll和PermitAll相反的,表示无论什么角色都不能访问

     在controller层进行添加注解

    1. /**
    2. * 查询所有用户
    3. */
    4. @RolesAllowed("ADMIN")
    5. @RequestMapping("findAll")
    6. public ModelAndView findAll(
    7. @RequestParam(name="page",defaultValue = "1")Integer page,
    8. @RequestParam(name="size",defaultValue = "5")Integer size) {
    9. ModelAndView mv = new ModelAndView();
    10. List userList = userService.findAllUsers(page,size);
    11. PageInfo pageInfo=new PageInfo(userList);
    12. mv.addObject("pageInfo", pageInfo);
    13. mv.setViewName("user-list");
    14. return mv;
    15. }

    @RolesAllowed("ADMIN") 在方法上findAll(查询所有用户)使用代表的是只有ADMIN的权限才能访问该功能  

    使用其他用户进行登录,其他用户没有ADMIN和USER权限,再进行访问 findProductByParams该方法时,会报403错误

    4.1.2、@Secured注解

    开启@Secured注解

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xmlns:security="http://www.springframework.org/schema/security"
    6. xmlns:aop="http://www.springframework.org/schema/aop"
    7. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">
    8. <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    9. <property name="prefix" value="/pages/"/>
    10. <property name="suffix" value=".jsp"/>
    11. bean>
    12. <mvc:annotation-driven/>
    13. <context:component-scan base-package="cn.itssl.*"/>
    14. <mvc:default-servlet-handler/>
    15. <mvc:annotation-driven>
    16. <mvc:message-converters>
    17. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    18. <property name="supportedMediaTypes">
    19. <list>
    20. <value>text/html;charset=utf-8value>
    21. list>
    22. property>
    23. bean>
    24. mvc:message-converters>
    25. mvc:annotation-driven>
    26. <security:global-method-security jsr250-annotations="enabled" secured-annotations="enabled"
    27. pre-post-annotations="enabled"/>
    28. beans>

    @Secured注解标注的方法进行权限控制的支持,其值默认为disabled。

    1. /**
    2. * 查询所有用户
    3. */
    4. @Secured("ROLE_ADMIN")//只有admin才可以访问
    5. @RequestMapping("findAll")
    6. public ModelAndView findAll(
    7. @RequestParam(name="page",defaultValue = "1")Integer page,
    8. @RequestParam(name="size",defaultValue = "5")Integer size) {
    9. ModelAndView mv = new ModelAndView();
    10. List userList = userService.findAllUsers(page,size);
    11. PageInfo pageInfo=new PageInfo(userList);
    12. mv.addObject("pageInfo", pageInfo);
    13. mv.setViewName("user-list");
    14. return mv;
    15. }

    4.1.3、表达式注解

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xmlns:security="http://www.springframework.org/schema/security"
    6. xmlns:aop="http://www.springframework.org/schema/aop"
    7. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">
    8. <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    9. <property name="prefix" value="/pages/"/>
    10. <property name="suffix" value=".jsp"/>
    11. bean>
    12. <mvc:annotation-driven/>
    13. <context:component-scan base-package="cn.itssl.*"/>
    14. <mvc:default-servlet-handler/>
    15. <mvc:annotation-driven>
    16. <mvc:message-converters>
    17. <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    18. <property name="supportedMediaTypes">
    19. <list>
    20. <value>text/html;charset=utf-8value>
    21. list>
    22. property>
    23. bean>
    24. mvc:message-converters>
    25. mvc:annotation-driven>
    26. <security:global-method-security jsr250-annotations="enabled" secured-annotations="enabled"
    27. pre-post-annotations="enabled"/>
    28. beans>
    注解说明
    @PreAuthorize在方法调用之前,基于表达式的计算结果来限制对方法的访问
    @PostAuthorize在方法调用之后,允许方法调用,但是如果表达式计算结果为false,将抛出一个安全性异常
    @PostFilter允许方法调用,但必须按照表达式来过滤方法的结果--了解
    @PreFilter允许方法调用,但必须在进入方法之前过滤输入值--了解
    1. /**
    2. * 查询所有用户
    3. */
    4. @PreAuthorize("authentication.principal.username == 'itssl'")//只有itssl才可以访问
    5. @RequestMapping("findAll")
    6. public ModelAndView findAll(
    7. @RequestParam(name="page",defaultValue = "1")Integer page,
    8. @RequestParam(name="size",defaultValue = "5")Integer size) {
    9. ModelAndView mv = new ModelAndView();
    10. List userList = userService.findAllUsers(page,size);
    11. PageInfo pageInfo=new PageInfo(userList);
    12. mv.addObject("pageInfo", pageInfo);
    13. mv.setViewName("user-list");
    14. return mv;
    15. }
    16. /**
    17. * 新增用户
    18. */
    19. @PreAuthorize("hasRole('ROLE_USER')") // 只有【ROLE_USER】该权限才能访问该方法
    20. @RequestMapping("save")
    21. public String save(UserInfo userInfo){
    22. userService.save(userInfo);
    23. return "redirect:findAll.do";
    24. }

    4.2、页面端权限控制

    在jsp页面中我们可以使用spring security提供的权限标签来进行权限控制

    4.2.1、导入Maven坐标

    1. <dependency>
    2. <groupId>org.springframework.securitygroupId>
    3. <artifactId>spring-security-taglibsartifactId>
    4. <version>5.2.9.RELEASEversion>
    5. dependency>

    4.2.2、在jsp页面导入核心库

    <%@taglib uri="http://www.springframework.org/security/tags" prefix="security"%>

    4.2.3、常用标签

     在jsp中我们可以使用以下三种标签,其中authentication代表的是当前认证对象,可以获取当前认证对象信息,例如用户名。其它两个标签我们可以用于权限控制。

    authentication标签

    <security:authentication property="" htmlEscape="" scope="" var=""/>
    • property: 只允许指定Authentication所拥有的属性,可以进行属性的级联获取,如“principle.username”,不允许直接通过方法进行调用

    • htmlEscape:表示是否需要将html进行转义。默认为true。

    • scope:与var属性一起使用,用于指定存放获取的结果的属性名的作用范围,默认我pageContext。Jsp中拥有的作用范围都进行进行指定

    • var: 用于指定一个属性名,这样当获取到了authentication的相关信息后会将其以var指定的属性名进行存放,默认是存放在pageConext中

     authorize标签

    authorize是用来判断普通权限的,通过判断用户是否具有对应的权限而控制其所包含内容的显示

    <security:authorize access="" method="" url="" var="">security:authorize>
    • access: 需要使用表达式来判断权限,当表达式的返回结果为true时表示拥有对应的权限

    • method:method属性是配合url属性一起使用的,表示用户应当具有指定url指定method访问的权限,

    • method的默认值为GET,可选值为http请求的7种方法

    • url:url表示如果用户拥有访问指定url的权限即表示可以显示authorize标签包含的内容

    • var:用于指定将权限鉴定的结果存放在pageContext的哪个属性中

    4.2.4、展示登录的用户名

    <security:authentication property="principal.username">security:authentication>

    4.2.5、注意事项

    需要在spring-security配置文件中注入以下bean

    <bean id="webSecurityExpressionHandler" class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler"/>

    代表只有ADMIN权限的用户才显示该功能 (只有登录的用户拥有ADMIN角色才可以看到以下页面)

    1. <li id="system-setting1">
    2. <security:authorize access="hasRole('ADMIN')">
    3. <a href="${pageContext.request.contextPath}/user/findAll.do?page=1&size=5">
    4. <span class="glyphicon glyphicon-object-align-bottom">span> 用户管理
    5. a>
    6. security:authorize>
    7. li>
    8. <li id="system-setting2">
    9. <security:authorize access="hasRole('ADMIN')">
    10. <a href="${pageContext.request.contextPath}/role/findAll.do?page=1&size=5">
    11. <span class="glyphicon glyphicon-object-align-bottom">span> 角色管理
    12. a>
    13. security:authorize>
    14. li>
    15. <li id="system-setting3">
    16. <security:authorize access="hasRole('ADMIN')">
    17. <a href="${pageContext.request.contextPath}/permission/findAll.do?page=1&size=5">
    18. <span class="glyphicon glyphicon-object-align-bottom">span> 资源权限管理
    19. a>
    20. security:authorize>
    21. li>
    22. <li id="system-setting4">
    23. <security:authorize access="hasRole('ADMIN')">
    24. <a href="${pageContext.request.contextPath}/sysLog/findAll.do?page=1&size=5">
    25. <span class="glyphicon glyphicon-object-align-bottom">span> 访问日志
    26. a>
    27. security:authorize>
    28. li>
  • 相关阅读:
    UE4 回合游戏项目 08- 攻击界面UI的点击事件
    二叉树的深度
    DataX实现Mysql与ElasticSearch(ES)数据同步
    洗眼镜超声波清洗机用什么水清洗、小型超声波清洗机推荐
    前端部署自动化 - CI/CD
    XXL-JOB核心源码解读及时间轮原理剖析
    【HTML5】弹性盒子实现导航栏和留言框
    销帮帮CRM与电商运营增效的关系?
    【notion enhancer安装】一个强大的笔记软件,可以实现侧边目录的notion
    Qt的常用类及作用
  • 原文地址:https://blog.csdn.net/select_myname/article/details/127694480