Spring Security 学习记录


package org.springframework.security.core.userdetails;

import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;

import java.io.Serializable;
import java.util.Collection;

/**
 * 提供核心用户信息。
 *
 * <p>
 * 出于安全目的,Spring Security不会直接使用实现。他们
 * 只需存储用户信息,这些信息后来被封装到{@link Authentication}中
 * 对象。这允许非安全相关的用户信息(如电子邮件地址、
 * 电话号码等)存储在方便的位置。
 * <p>
 * 具体实施必须特别注意确保合同无效
 * 执行每种方法的详细说明。看见
 * {@link org.springframework.security.core.userdetails.User}参考
 * 实现(您可能想在代码中扩展或使用)。
 *
 * @author 本·亚历克斯
 * @see UserDetailsService
 * @see UserCache
 */
public interface UserDetails extends Serializable {
    // ~ Methods
    // ========================================================================================================

    /**
     * 返回授予用户的权限。无法返回<code>null</code>。
     *
     * @return the authorities, sorted by natural key (ever <code>null</code>)
     */
    Collection<? extends GrantedAuthority> getAuthorities();

    /**
     * 返回用于验证用户的密码。
     *
     * @return 密码
     */
    String getPassword();

    /**
     * 返回用于验证用户的用户名。无法返回<code>null</code>。
     *
     * @return 用户名(永远不要<code>null</code>)
     */
    String getUsername();

    /**
     * 指示用户的帐户是否已过期。过期的帐户不能
     * 已认证。
     *
     * @return <code>true</code> 如果用户的帐户有效(即未过期),
     * <code>false</code>如果不再有效(即过期)
     */
    boolean isAccountNonExpired();

    /**
     * 指示用户是锁定还是解锁。锁定用户不能
     * 已认证。
     *
     * @return <code>true</code>如果用户没有锁定,<code>false</code>否则
     */
    boolean isAccountNonLocked();

    /**
     * 指示用户的凭据(密码)是否已过期。已过期
     * 凭据阻止身份验证。
     *
     * @return <code>true</code> 如果用户的凭据有效(即未过期),
     * <code>false</code>如果不再有效(即过期)
     */
    boolean isCredentialsNonExpired();

    /**
     * 指示用户是启用还是禁用。禁用用户不能
     * 已认证。
     *
     * @return <code>true</code>如果用户已启用,<code>false</code>否则
     */
    boolean isEnabled();
}
package org.springframework.security.core.userdetails;

/**

*加载用户特定数据的核心界面。

* <p>

*它在整个框架中作为用户DAO使用,并且是

* {@link org.springframework.security.authentication.dao.DaoAuthenticationProvider

* DaoAuthenticationProvider}。

*

* <p>

*该接口只需要一种只读方法,这简化了对新

*数据访问策略。

*

* @see org.springframework.security.authentication.dao.DaoAuthenticationProvider

* @see UserDetails

*

* @author 本·亚历克斯

*/
public interface UserDetailsService {
    // ~ Methods
    // ========================================================================================================

/**

*根据用户名找到用户。在实际实施中,搜索

*可能区分大小写,也可能不区分大小写,具体取决于

*已配置实现实例。在这种情况下,<code>UserDetails</code>

*回来的对象可能有一个与什么情况不同的用户名

*实际上是要求的..

*

* @param用户名标识需要其数据的用户的用户名。

*

* @return一个完全填充的用户记录(永远不要<code>null</code>)

*

* @throws UsernameNotFoundException 如果找不到用户或用户没有

* Granted授权

*/
    UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}

UserDetails.java

UserDetailsService.java


文章作者: dhslegen
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 dhslegen !
评论
 上一篇
Chatgpt 用途大全 Chatgpt 用途大全
Chatgpt 用途大全 Linux 命令、shell编程学习 任意语言的源码学习 解决程序错误、疑难问题 Python、Shell等语言的脚本开发 重构与优化代码 人性化的翻译 Sql慢的优化 Excel 表格 充当解释器、控制台、调试器
2023-01-30
下一篇 
cas原理 cas原理
CAS实现单点登录(sso)原理1. CAS 简介1.1. What is CAS ?CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提
  目录