atlasppbe0612访问密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了atlasppbe0612访问密码相关的知识,希望对你有一定的参考价值。

参考技术A 在初始安装后,启动时需要进行登录。
ApacheAtlas在初始安装后,启动时需要进行登录,可以使用账号admin/admin进行登录,在apache的文档中并没有缺省账号的说明。
另外关于账号的管理,在Authentication中有说明,账号的信息存储在文件/conf/users-credentials.properties中,其格式是:
其中的Password通过如下方式产生sha256sum摘要信息
当然这是在使用FILE作为认证方式时,该方式是通过在atlas-application.properties中如下设置的。
还好,这是缺省的设置,你可以只关心如何设置/conf/users-credentials.properties的账号信息。

无法访问密码:它在用户中是私有的

【中文标题】无法访问密码:它在用户中是私有的【英文标题】:Cannot access password: it is private in User 【发布时间】:2021-11-27 06:34:54 【问题描述】:

我想存储和访问数据库中的密码,但是当我通过帮助实体类和 spring security UserDetails 从数据库中访问密码时,它会抛出一个错误,将密码设为私有,当我去存储密码时它会抛出 make password民众。我不知道如何在 Spring Security 中处理此类问题。我为User 实现了UserDetails,它覆盖了一些像getPassword() 这样的函数,它的返回类型是String,所以我将密码作为字符串参数返回。但是当我将 UserEntity 类中的密码字段声明为 public getPassword() 时会出现问题

Accidental override: The following declarations have the same JVM signature (getPassword()Ljava/lang/String;): 

当将密码字段设为私有时,在将数据存储在数据库中时出现另一个错误

\main\kotlin\com\nilmani\mychat\service\UserService.kt: (38, 14): Cannot access 'password': it is private in 'User'

用户.kt

package com.nilmani.mychat.model

import org.jetbrains.annotations.NotNull
import org.springframework.data.annotation.Id
import org.springframework.data.mongodb.core.mapping.Document
import java.time.LocalDate

@Document
open class User(
    @Id
    var id: String? ="",
    var userName: String? ="",
    var password: String? ="",
    var email: String? ="",
    var createdAt: LocalDate? =LocalDate.now(),
    var updatedAt: LocalDate? = LocalDate.now(),
    var active:Boolean=false,
    @NotNull
    var userProfile: Profile?,
    @NotNull
    var role: MutableSet<Role>? = HashSet()
    ) 
    constructor(user: User?):this(
        user?.id, user?.userName, user?.password, user?.email, user?.createdAt,
        user?.updatedAt, user?.active == true, user?.userProfile, user?.role
    )

    constructor() : this(null)

InstaUserDetails.kt

package com.nilmani.mychat.model

import org.springframework.security.core.GrantedAuthority
import org.springframework.security.core.authority.SimpleGrantedAuthority
import org.springframework.security.core.userdetails.UserDetails
import java.util.stream.Collectors

class InstaUserDetails :User(),UserDetails 
    override fun getAuthorities(): MutableCollection<out GrantedAuthority> 
        return role
            ?.stream()
            ?.map  role -> SimpleGrantedAuthority("ROLE_"+role.name) 
            ?.collect(Collectors.toList())!!
    
    override fun getPassword() : String 
        return "password"
    
    override fun getUsername(): String 
        return "username"
    
    override fun isAccountNonExpired(): Boolean 
        return isAccountNonExpired
    
    override fun isAccountNonLocked(): Boolean 
        return isAccountNonLocked
    
    override fun isCredentialsNonExpired(): Boolean 
       return isCredentialsNonExpired
    
    override fun isEnabled(): Boolean 
        return isEnabled
    

用户服务.kt

package com.nilmani.mychat.service

import com.nilmani.mychat.model.Role
import com.nilmani.mychat.model.User
import com.nilmani.mychat.repository.UserRepository
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.security.authentication.AuthenticationManager
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
import org.springframework.security.core.Authentication
import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.stereotype.Service
import java.util.*


@Service
class UserService 
    val log : Logger = LoggerFactory.getLogger(UserService::class.java)
    @Autowired
    private lateinit var userRepository: UserRepository
    @Autowired
    private lateinit var passwordEncoder: PasswordEncoder
    @Autowired
    private lateinit var authenticationManager: AuthenticationManager
    @Autowired
    private lateinit var jwtTokenProvider: JwtTokenProvider

    fun register(user:User, role:Role): User 
        log.info("Register user ", user.userName)
        if (userRepository.existsByUserName(user.userName!!) == true) 
            log.warn("UserName already Exist", user.userName)
        
        if (userRepository.existsByEmail(user.email!!) == true) 
            log.warn("This email already Registred", user.email)
        
        user.active = true
        user.password = passwordEncoder.encode(user.password)
        user.role = user.role
        /**it auto automatically get the user type from role due to some conflict  set role provided by user*/
        return userRepository.save(user)
    

如果公开密码,我会在 InstaUserDetails 类中遇到错误 getPassword()。如果在User 类中将密码字段设为私有,我在保存密码时会在UserService 类中出现错误。如何在单个实体类中处理这个多重问题。我在密码上应用了可变密码和私钥,例如 private var password:String?="" 但在register() 中的密码保存时出现错误,该密码在我的UserService 类中定义。

【问题讨论】:

可能还值得指出的是,出于安全原因,直接存储密码通常是一个非常糟糕的主意;存储密码的 hash 通常更安全。 (这样,您可以验证用户是否输入了正确的密码——但访问您的数据库的恶意行为者不会获得您所有用户的密码。) 对密码进行编码总比没有好,但仍然可以被解码。 【参考方案1】:

您可以将密码参数设为私有,并为其显式创建 getter 和 setter。

open class User(
    private var password: String? = "",
    private var username: String? = "",
    // ...
) 
    constructor() : this(null)

    open fun getPassword(): String? 
        return password
    

    open fun setPassword(password: String?) 
        this.password = password
    

请注意,在InstaUserDetails 中,如果您只想从User 继承getPassword(),则无需覆盖getPassword()

【讨论】:

以上是关于atlasppbe0612访问密码的主要内容,如果未能解决你的问题,请参考以下文章

访问共享电脑输错密码怎么办

从不正确的线程访问的领域 - 再次

访问类实例的属性

mysql8.0修改密码及远程访问设置

使用 Facebook php sdk 访问相册/照片时,“请求此资源需要访问令牌”

访问 Bamboo 密码/密码变量?