您的位置:首页 > 教育 > 锐评 > 在线制图免费_香港特别行政区政府官网首页_seo服务顾问_百度搜索词热度查询

在线制图免费_香港特别行政区政府官网首页_seo服务顾问_百度搜索词热度查询

2025/5/16 11:05:59 来源:https://blog.csdn.net/wusuoweiieq/article/details/144403086  浏览:    关键词:在线制图免费_香港特别行政区政府官网首页_seo服务顾问_百度搜索词热度查询
在线制图免费_香港特别行政区政府官网首页_seo服务顾问_百度搜索词热度查询

目录

  • 前置内容
    • 认证与授权
    • 配置和配置类
  • security内部的关键类
    • UserDetails
    • User
    • UserDetailsService(加载用户数据,提供用户信息)


前置内容

认证与授权

认证即系统判断用户的身份是否合法,合法可继续访问,不合法则拒绝访问。(如密码登录)
授权即认证通过后,根据用户的权限来控制用户访问资源的过程,拥有资源的访问权限则正常访问,没有权限则拒绝访问。(如非VIP用户拒绝使用)

配置和配置类

配置
配置没什么特殊点,在创建项目时引用,或者直接在pom文件中增加如下的依赖即可
pom.xml

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>

在项目中使用Security框架,需要创建security的配置类(这个配置类就是后面的这些内容,认证和授权都在配置类中完成定义)
配置类
描述:定义security中的密码编码器等相关的配置

package com.wunaiieq.tmp2024121105.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
//security的配置类
@Configuration
public class SecurityConfig {//密码默认加密,此处配置密码编码器,设置不解析密码@Beanpublic PasswordEncoder passwordEncoder(){return NoOpPasswordEncoder.getInstance();}
}

目录结构
在这里插入图片描述

security内部的关键类

UserDetails

类型:接口
作用:实现UserDetails接口以提供security中的用户基本信息,如账号密码、权限等级等。
内部属性

方法名返回类型描述
getAuthorities()Collection<? extends GrantedAuthority>返回授予用户的权限集合。这些权限通常表示用户能够执行的操作或访问的资源。GrantedAuthority是一个接口,它的实现类包含了权限的具体信息。
getPassword()String返回用户的密码。在大多数实现中,这个密码是经过加密的,而不是明文密码。这是为了安全起见,避免在应用程序中存储或传输明文密码。
getUsername()String返回用户的用户名。这是用户登录时使用的唯一标识符,用于在身份验证过程中识别用户。
isAccountNonExpired()boolean返回一个布尔值,指示用户的账户是否未过期。如果账户已过期,用户将无法登录或执行需要身份验证的操作。
isAccountNonLocked()boolean返回一个布尔值,指示用户的账户是否未被锁定。如果账户被锁定,用户将无法登录,这通常是由于多次尝试登录失败或其他安全原因。
isCredentialsNonExpired()boolean返回一个布尔值,指示用户的凭据(如密码)是否未过期。如果凭据已过期,用户将需要更新凭据才能登录。
isEnabled()boolean返回一个布尔值,指示用户的账户是否启用。如果账户被禁用,用户将无法登录,即使他们的用户名和密码是正确的。
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
import java.util.Collections;
public class CustomUserDetails implements UserDetails {private String username;private String password;private Collection<? extends GrantedAuthority> authorities;// 其他用户信息字段,如姓名、电子邮件等// 构造函数,用于初始化用户信息public CustomUserDetails(String username, String password, Collection<? extends GrantedAuthority> authorities) {this.username = username;this.password = password;this.authorities = authorities;}// 实现UserDetails接口的方法@Overridepublic Collection<? extends GrantedAuthority> getAuthorities() {return authorities;}@Overridepublic String getPassword() {return password;}@Overridepublic String getUsername() {return username;}
}

User

类型:UserDetails的实现类
作用:作为security的测试包中的辅助类,不建议接入生产,生产环境中的用户类还是需要自行定义,定义方法如上(实现UserDetails)

UserDetailsService(加载用户数据,提供用户信息)

类型:接口
作用:UserDetailsService方法loadUserByUsername根据用户名加载用户信息,并返回一个UserDetails对象(认证逻辑,这一部分可以做出一定的修改)。这个对象随后会被AuthenticationProvider用于与用户输入的账号密码等认证信息进行比较,以判断用户身份是否有效。关于AuthenticationProvider类的内容一般不做修改
内部方法: loadUserByUsername(String username),该方法根据用户名加载用户的详细信息。

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com