我刚刚在Google App Engine Java应用程序上创建了自己的自定义身份验证。麻烦不如我想做的下一件事。
身份验证工作正常,但是现在我尝试向默认的User对象添加一些其他字段,这样我就不必对服务器进行太多调用。
因此,到目前为止,我已经创建了一个实现Authenticator的自定义类。根据用户是否通过身份验证,authenticate方法返回User对象或null。然后,我的API端点可以访问用户对象。
为了扩展我的应用程序功能,我尝试扩展默认的User对象,创建一些新字段,然后将其传递给端点。但是,由于端点可访问的User对象与我扩展的对象不同,因此无法获得额外的字段。
MyAuthenticator.java
import com.google.api.server.spi.auth.common.User;
public class MyAuthenticator implements Authenticator {
@Override
public User authenticate(HttpServletRequest request) {
// some code
return new AuthUser(...)
}
AuthUser.java
import com.google.api.server.spi.auth.common.User;
public class AuthUser extends User {
private String newToken;
public AuthUser(String email) {
super(email);
}
public AuthUser(String id, String email) {
super(id, email);
}
public AuthUser(String id, String email, String newToken) {
super(id, email);
this.newToken = newToken;
}
public String getNewToken() {
return newToken;
}
}
UserEndpoint.java
import com.google.appengine.api.users.User;
@Api(authenticators = MyAuthenticator.class)
public class UserEndpoint {
@ApiMethod(httpMethod = "GET")
public final Response sth(User user)
throws UnauthorizedException {
EndpointUtil.throwIfNotAuthenticated(user);
// ...
}
注意不同的类导入。
我不能在UserEndpoint sth方法中使用AuthUser,因为API希望我在调用服务器时发布该对象。
如何将额外的数据从身份验证器传递到端点方法?
AppEngine文档说注入的类型如下:
但是,它没有提及com.google.api.server.spi.auth.common.User,但可以肯定地起作用。我刚刚尝试使用AppEngine
Java SDK 1.9.32。我不知道这是错误还是功能。
因此,在UserEndpoint.java中,您必须导入com.google.api.server.spi.auth.common.User,然后才能将其转换为AuthUser。
import com.google.api.server.spi.auth.common.User;
@Api(authenticators = MyAuthenticator.class)
public class UserEndpoint {
@ApiMethod(httpMethod = "GET")
public final Response sth(User user)
throws UnauthorizedException {
EndpointUtil.throwIfNotAuthenticated(user);
((AuthUser)user).getNewToken();
// ...
}
我正在尝试将我的实时数据库调整为一个聊天应用程序的云firestore。存储的对象是我创建的Message类。我希望邮件成为文档。 我的RecyclerView适配器将使用实时数据库这样检索它们: 下面是我如何开始用Firestore重新创建它的。如何在快照侦听器的OneEvent方法中将快照转换回消息?
Django 自带的 User 及 auth 库为快速开发带来了很大便利,也增加了扩展其功能的难度。 Django 官方文档中是推荐使用一对一的关联 Model 来扩展 User model: class UserExtend(Model): user = OneToOneField(User, auto_create=True, relate_name='extend') fie
问题内容: 我正在尝试将自己的自定义对象传递到包中: 我得到错误: 问题答案: 一种方法是让您的自定义对象实现Parcelable接口并使用
我有以下对象需要存储在Cassandra中。我需要使用UDT还是有其他方法来存储对象。我需要最终使用存储库方法从spry-boot应用程序存储它。
问题内容: 我在Playground中使用Swift 3,Xcode 8.0拥有此功能: 创建人员数组 编码数组 保存到用户默认值 检查 从userDefaults返回 只需检查存档的数据 我无法正确将数据对象保存到userDefaults,此外,底部的检查还会产生错误“严重错误:在展开可选值时意外发现nil”。“检查”行还显示已保存的对象为nil。这是我对象的NSCoder中的错误吗? 问题答案
问题内容: 我试图将其他数据保存在de用户主体对象中。 我所做的是: 在我现有的用户类中实现“ UserDetails”界面,我的其他数据(例如电子邮件地址等)保存在该类中。 然后,我创建了一个UserDetailsService实现: 最后一步是在“安全性”配置中添加UserDetailsService。 我在控制台中看到“ loadUserByName”被调用了两次(由于“ Found