Java中对象类的继承(Inheritance of Object Class in Java)

当我阅读java书籍时,我遇到了“ 每个类扩展类对象 ”...但是如果想要一个类B来扩展类A ......但是B类现在将具有多个继承,一个来自Object类和一个来自A级。如何解决冲突。 谁有人解释一下?


While i was reading java book, i came across "Every class extends class Object"...but if want a class B to extend class A.....but Class B will be now having multiple inheritance,one from Object class and one from Class A.How the conflict is resolved. Can anyone explain?


原文:https://stackoverflow.com/questions/8470535
2024-04-12 20:04

满意答案

使User对象继承自UserDetails(或使用包装器)并将其用作主体。

public class MyCustomUser implemnents UserDetails {
    // ..
}

创建一个返回User对象的自定义UserDetailsS​​ervice

@Service
public class MyCustomUserDetailsServiceImpl implements UserDetailsService {

    @Autowired
    private MyCustomUserDAO userDAO;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        return userDAO.getByUsername(username);
    }
}

现在您可以提取您的用户

Authentication auth = SecurityContextHolder.getContext().getAuthentication();

Object principal = auth.getPrincipal();

MyCustomUser user = (MyCustomUser)principal;

user.myCustomMethod();

Make your User object inherit UserDetails(or use a wrapper) and use it as principal.

e.g.

public class MyCustomUser implements UserDetails {
    // ..
}

Make a custom UserDetailsService that returns your User object:

@Service
public class MyCustomUserDetailsServiceImpl implements UserDetailsService {

    @Autowired
    private MyCustomUserDAO userDAO;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        return userDAO.getByUsername(username);
    }
}

Now you can extract your user:

Authentication auth = SecurityContextHolder.getContext().getAuthentication();

Object principal = auth.getPrincipal();

MyCustomUser user = (MyCustomUser)principal;

user.myCustomMethod();

相关问答

更多

使用spring 3.0进行用户身份验证(User Authentication with spring 3.0)

最简单的方法是将一个登录表单发布到Spring Controller,它将用户名和密码作为参数。 在控制器中,您可以执行任何想要验证用户名和密码的操作。 最好是委托一些负责处理的服务层。 如果成功通过身份验证,那么您想要做什么? 可能会重定向到主页。 现在,主页呈现应该知道用户已经过身份验证。 这是春季安全有帮助的地方。 但您也可以通过编写Servlet过滤器来实现,您可以通过检查http会话来检查用户是否已经过身份验证。 当然,在成功登录后,您需要将其存储在会话中,然后只有过滤器可以使用它。 还...

通过自定义用户的数据库进行Spring安全认证(Spring security authentication through database with custom user)

我改变了return new UsernamePasswordAuthenticationToken(name, password, authorities); return new UsernamePasswordAuthenticationToken(user, password, authorities); 并在我的HTML页面中使用sec:authentication="principal.name"来检索名称参数 I changed return new UsernamePassword...

我如何使用Hibernate 3 Annotated Classes配置Spring Security 2数据库身份验证?(How do I configure Spring Security 2 database authentication with Hibernate 3 Annotated Classes?)

您可以将自定义的UserDetailsService实现为您的域和Spring Security之间的桥梁。 然后你为Spring Security提供如下(对于Spring Security 2.x): <security:authentication-provider user-service-ref='myUserDetailsService'/> <bean id="myUserDetailsService" class="... your implementation ..."> ...

Spring Secuiry数据库身份验证将Spring用户转换为域用户(Spring Secuiry Database Authentication casting Spring User to Domain User)

使User对象继承自UserDetails(或使用包装器)并将其用作主体。 public class MyCustomUser implemnents UserDetails { // .. } 创建一个返回User对象的自定义UserDetailsService @Service public class MyCustomUserDetailsServiceImpl implements UserDetailsService { @Autowired private ...

在身份验证后设置Spring RememberMe Cookie域(Set Spring RememberMe Cookie Domain after Authentication)

我最后遵循了这篇文章的建议: Spring Security RememberMe成功处理程序或url过滤并实现了一个AuthenticationSuccessHandler,我将其传递给我的表单登录配置和我记住我的配置。 <http> <form-login ... authentication-success-handler-ref="customAuthenticationSuccessHandler"/> <remember-me authentication-succes...

使用“代理”用户进行Spring Active Directory身份验证(Spring Active Directory Authentication using “proxy” user)

我成功尝试了你的方案。 也许迟到但它可能会帮助别人。 首先,我按照此处的描述设置了我的项目。 其次,我在WebSecurityConfig类中添加了以下内容: @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth .ldapAuthentication() // User Base DN ...

如何在Spring安全性中进行LDAP身份验证和数据库授权?(How to do LDAP authentication and database Authorization in Spring security?)

是。 内置ldap身份验证管理器将用户的身份验证和授权分为两部分您可以配置基于LDAP的身份验证管理器,如下所示。 <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"> <property name="providers"> <list> <ref local="ldapAuthenticationProvider"/> ...

默认管理员用户(Spring 3,Spring Security)(Default admin user (Spring 3, Spring Security))

您可以拥有多个身份验证提供程 像你已经做的那样使用第一个。 为管理员添加具有固定名称,密码和角色的秒。 (两个身份验证提供程序的顺序很重要;如果在第一个身份验证提供程序中找不到身份验证,则仅考虑第二个。) <security:authentication-manager> <security:authentication-provider user-service-ref="customUserDetailsService"> <security:passwo...

相关文章

更多

Object Oriented Programming

Some might also contend that inheritance should be ...

Java 继承

Java 继承 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承可以 ...

Guava学习笔记:复写的Object常用方法

  在Java中Object类是所有类的父类,其中有几个需要override的方法比如equals,h ...

Cannot expose request attribute 'website' because of an existing model object of the same name 的解决方案

在使用springmvc+freemarker,有可能你会遇到以下异常(如:资源找不到重定向到404的 ...

java反射详解(一)_Class类

Java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,至于这个属性的值是什么,则是由这个 ...

如何卸载assembly?或者class

.net的动态编译功能很好,但是有个问题,动态编译的代码,每次执行后,都会产生一个新的assembly ...

mybatis There is no getter for property named 'xx' in 'class java.lang.String

用mybatis查询时,传入一个字符串传参数,且进行判断时,会报 There is no get ...

java通用返回对象

java通用返回对象返回对象通常包括是否成功、响应码、接口响应描述、响应实体几个属性

ssh 框架下 class 类打包发布

ssh 框架下 class 类打包后放到 web-inf/lib 下后 @autowire自动注入似乎 ...

最新问答

更多

如何引用共享重复名称的不同枚举值?(How to refer to different enum values which share a duplicate name?)

你不能。 编译器应该警告你。 enum常量存在于全局命名空间中。 第二个定义是重新定义,应该产生错误。 You can't. And the compiler should warn you about that. enum constants live in the global namespace. The second definition is a redefinition that should produce an error.

如何定位一个元素,使其整齐地放置在包装线下(How to position an element such that it neatly rests under a wrapped line)

div { display:inline-block; width:100%; border: 1px solid #000; } p { display:inline; } .button-primary { float:right; } Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididun

将大量边缘插入OrientDB会导致崩溃(ODatabaseException)(Inserting Large Amounts of Edges into OrientDB causes crash (ODatabaseException))

尝试这样的东西来创建边缘 OrientVertex vertex = graph.getVertex(houseList.get(h1).getRid()); OrientVertex vertex2 = graph.getVertex(houseList.get(h2).getRid()); vertex.addEdge("similarity",vertex2,new Object[]{"score",houseSim[h1][h2]}); Well, seems like the pro

如何解决登录页面,而不是重定向(How to solve login page, not redirecting)

你可以尝试使用其他条件 prepare("SELECT * FROM users WHERE emailAddress=:umail"); $stmt->bindValue(":umail", $umail); $stmt->execute(); $userRow = $stmt->fetchAll();

弹性搜索中基于人类语言的搜索(Human language based searches in elasticsearch)

机器对自然语言的理解是一个尚未解决的问题,也是一个活跃的研究领域,所以简短的答案是否定的,弹性研究无法理解人类语言。 NLP通常通过信息提取来进行语义(理解),信息提取是NLP内的子字段。 Elasticsearch是一个很好的工具,但它不是为信息提取而设计的 - 它最好被认为是一个带有一些额外功能的索引工具。 您可能对命名实体识别(NER)和概念识别更感兴趣,以回答您所描述的在Elasticsearch中支持最少的查询类型。 您提出的问题实际上是一个非常难以回答的问题,这就是为什么亚马逊在搜索

内存分配器的开销(Overhead of memory allocator)

这并没有真正回答你的问题,但Boost最近刚刚在最新版本中添加了一个内存池库。 它可能不是你想要的,但有一个彻底的对齐处理可能会引发一个想法? 如果文档不够,总会有源代码。 This doesn't really answer your question, but Boost has just recently added a memory pool library in the most recent version. It may not be exactly what you want,

在jsp中使用jstl版本和jsp库获取错误(getting error with jstl version and jsp library using in jsp)

你Tomcat极度过时了。 Tomcat 5.5(Servlet 2.4)不支持jsp表达式语言。 有关适当的Tomcat版本,请参阅此页面 。 如果可以,请更新到Tomcat 7。 You Tomcat is extremly outdated. Tomcat 5.5 (Servlet 2.4) does not support the jsp expression language. See this page for an appropriate Tomcat version. Updat

()发布后如何再次播放MediaPlayer(How to play again MediaPlayer after release())

只要移动你的 final MediaPlayer soundda = MediaPlayer.create(this, R.raw.da); 在onClick()之前 soundda.start(); 因此无论您是否发布它,还是尚未创建,都需要在播放之前创建MediaPlayer 。 也不要使用this ,而要使用.this ,因为您将在OnClickListener移动代码,并将其视为OnClickListener对象,并且需要一个Context对象

断言纯RESTful应用程序要求HTTPS安全是否正确?(Is it correct to assert that pure RESTful applications require HTTPS to be secure?)

假。 每个请求都带有身份验证的事实并不意味着可以重播请求。 HTTP DIGEST可用于身份验证,并且无法重放摘要式身份验证,因为来自服务器的质询将在每个连接上携带不同的nonce,并且客户端无法重用nonce: 允许服务器随机数包含时间戳。 因此,服务器可以检查客户端提交的nonce属性,以防止重放攻击。 还允许服务器维护最近发布或使用的服务器现时值列表,以防止重用 要求HTTPS本身并不坏,它肯定会增加对流量的隐私和篡改保护,但不需要防止重放和复制粘贴攻击。 False. The fact

如何在Spring中销毁servlet时捕获Configuration类中的回调?(How to catch callback in Configuration class when servlet is destroyed in Spring?)

取决于您在项目中使用的弹簧版本,您可以通过这种方式实现它。 春天4.2+ class Foo { @EventListener public bar(ContextStoppedEvent event) { } } 春天<4.2 class Foo implements ApplicationListener { void onApplicationEvent(ContextStoppedEvent event); }