SpringSecurity入门《之使用SpringSecurity的页面标签库》

jsp页面使用SpringSecurity中User对象信息

如何在jsp页面中,展示保存在SpringSecurity中的信息:

  • 第一步 ,导入SpringSecurity的标签库依赖:
<dependency>
     <groupId>org.springframework.security</groupId>
     <artifactId>spring-security-taglibs</artifactId>
     <version>4.2.10.RELEASE</version>
</dependency>
  • 第二步 ,页面引入SpringSecurity的标签库:
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="security" %>
  • 第三步 ,页面上使用SpringSecurity的标签:
    SpringSecurity登录后会将存入的User对象 (如果存入的是其子类,那么这里就是其子类对象) 作为principal,即principal就是存入的User对象本身,所以要想获取登录后的用户信息,可以从principal中获取,直接通过 .属性名 的方式就可以获取到User对象中的属性值。

  • 存入的子类:

import com.atguigu.crowd.entity.Admin;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.User;
import java.util.Collection;

/**
 * 系统用户对象,扩展SpringSecurity的原始User
 */
public class SecurityAdmin extends User {
     

    private Admin originalAdmin;

    public SecurityAdmin(Admin admin, Collection<? extends GrantedAuthority> authorities) {
     
        super(admin.getLoginAcct(), admin.getUserPswd(), authorities);
        this.originalAdmin = admin;
    }

    public Admin getOriginalAdmin() {
     
        return originalAdmin;
    }
}
/**
 * 用户类
 */
public class Admin {
     
    /**
     * 主键
     */
    private Integer id;

    /**
     * 登录账号
     */
    private String loginAcct;

    /**
     * 登录密码
     */
    private String userPswd;

    /**
     * 昵称
     */
    private String userName;

    /**
     * 邮件地址
     */
    private String email;

    /**
     * 创建时间
     */
    private String createTime;

    public Admin() {
     
    }
 }
  • 页面使用:
<!-- 获取登录对象的用户名 -->
<security:authentication property="principal.originalAdmin.userName"/>

JSP页面标签设置访问权限

页面标签也可以进行权限设置,需要和上面一样,引入taglib的mvn依赖。

  1. 第一步,引入SpingSecurity标签库
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="security" %>
  1. 第二步,使用标签
<security:authorize access="hasRole('manager')">
</security:authorize>

注意: 获取信息使用的是authentication,设置权限使用的是authorize。

你可能感兴趣的:(java,spring,后端,spring,boot,jsp)