在我的控制器中,当我需要活动(登录)用户时,我正在执行以下操作来获取我的UserDetails
实现:
User activeUser = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
log.debug(activeUser.getSomeCustomField());
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我认为Spring可以在这样的情况下让生活更轻松.有没有办法将UserDetails
自动装配到控制器或方法?
例如,类似于:
public ModelAndView someRequestHandler(Principal principal) { ... }
Run Code Online (Sandbox Code Playgroud)
但是,而不是得到UsernamePasswordAuthenticationToken
,我得到了一个UserDetails
?
我正在寻找一个优雅的解决方案.有任何想法吗?
我们正在开发一个由两个Eclipse项目组成的Web应用程序.一个项目是基于HTTP的RESTful Web服务; 另一个项目是一个网站.两者都将部署为WAR.最初,两者都将部署在同一个应用服务器实例下,但最终它们将位于不同的盒子上.
该网站应用程序使用RESTful WS应用程序.显然,会有代码 - 特别是域类 - 这两个项目都很常见.例如,可能有一个位于<app>/users的资源,它暴露了用户对象上的CRUD操作; 要更新用户,网站应用程序会将XML编组的用户对象POST到<app>/users.对<app>/users/1执行GET将返回XML编组的User对象.
显然,由于各种原因,在两个项目中都有一个User类非常愚蠢.所以我想知道最好的方法是什么?将公共代码放在两个项目之间共享的JAR中是我过去所做的,但有更好或更简单的方法吗?
编辑:删除RESTful引用.除了语义之外,在两个Eclipse项目之间共享公共代码的正确方法是什么?
我已经有了表单登录和Basic auth并在a的帮助下并排工作DelegatingAuthenticationEntryPoint
.
我要做的是让用户通过登录表单通过标准"A"进行身份验证,并让用户通过基本身份验证请求根据标准"B"进行身份验证.
某些应用程序的资源通过RESTful服务公开(可通过Basic auth访问).他们可以输入生成的键/值对,而不是让用户输入自己的凭据来进行REST服务调用,而是专门用于REST服务,以后可以由用户或应用程序管理员撤销.
我更愿意在两种身份验证方法之间共享尽可能多的特定于安全性的bean.我知道我需要单独的UserDetailsService
s,因为表单登录查询我的users
表,Basic auth将查询我的service_credentials
表.
在Spring Security中实现此类配置的正确方法是什么?
这是,什么工作:
a) 在 main.xml 中有两个 ImageView 的 FrameLayout
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:id="@+id/frameLayout1"
android:layout_height="wrap_content">
<ImageView android:src="@drawable/radar_background"
android:id="@+id/background" android:layout_width="wrap_content"
android:layout_height="wrap_content"></ImageView>
<ImageView android:src="@drawable/radar_sector" android:id="@+id/sector"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
b) 背景旋转动画,而前景扇区保持不变
因为我需要对背景图像做更多的工作,所以我把它放到了一个 FrameLayout 子类中,并相应地更改了 main.xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:id="@+id/frameLayout1"
android:layout_height="wrap_content">
<com.decades.SensorTest.RadarView
android:id="@+id/background" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView android:src="@drawable/radar_sector" android:id="@+id/sector"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
这是新的 RadarView.java:
public class RadarView extends FrameLayout {
private Bitmap mRadar;
public RadarView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public RadarView(Context context) {
super(context);
init();
}
private void init() {
mRadar = …
Run Code Online (Sandbox Code Playgroud) java ×2
android ×1
custom-view ×1
drawbitmap ×1
eclipse ×1
performance ×1
spring ×1
spring-mvc ×1
web-services ×1