我想向任何login的用户显示内容,如果他们没有login,将隐藏内容。我使用jsp和spring安全。 显然,家庭解决scheme很容易完成。 但是,实现这一目标的最简洁的标准方法是什么? Spring安全标签似乎没有很好的方法,将来可以添加新的angular色。
在我们的项目中,我们正在写一个testing来检查控制器是否返回正确的模型视图 @Test public void controllerReturnsModelToOverzichtpage() { ModelAndView modelView = new ModelAndView(); KlasoverzichtController controller = new KlasoverzichtController(); modelView = controller.showOverzicht(); assertEquals("Klasoverzichtcontroller returns the wrong view ", modelView.getViewName(), "overzicht"); } 这将返回exceptionnull。 我们现在正在configuration@contextconfiguration,但我们不知道如何加载位于src \ main \ webapp \ root \ WEB-INF \ root-context.xml中的正确的xml @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration public class TestOverzichtSenario{ …. 这个文档不够清楚 任何build议如何确保contextannotation加载正确的XML? 编辑v2 我将configuration.xml文件从webINF文件夹复制到 src\main\resources\be\..a bunch of folders..\configuration\*.xml 并将webinf中的web.xml改为 […]
我知道保护REST API是广泛评论的主题,但我无法创build一个满足我的标准的小原型(我需要确认这些标准是否现实)。 有如此多的select如何保护资源,以及如何与春季安全工作,我需要澄清,如果我的需求是现实的。 我的要求 基于令牌的身份validation器 – 用户将提供其凭据并获取唯一且有时间限制的访问令牌。 我想pipe理令牌创build,检查有效性,在我自己的执行到期。 一些REST资源将被公开 – 完全不需要authentication, 有些资源只能用于拥有pipe理员权限的用户, 其他资源将在所有用户授权后可访问。 我不想使用基本身份validation Java代码configuration(不是XML) 当前状态 我的REST API工作得很好,但现在我需要保护它。 当我正在寻找解决scheme时,我创build了一个javax.servlet.Filterfilter: @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String accessToken = request.getHeader(AUTHORIZATION_TOKEN); Account account = accountDao.find(accessToken); if (account == null) { throw new UnauthorizedException(); } chain.doFilter(req, […]
一个标准的案例 – 你有一个控制器( @Controller )和@Scope("session") 。 例如,放在会话中的类通常需要实现Serializable以便在服务器重新启动的情况下可以进行物理存储 如果控制器实现Serializable ,这意味着它所指的所有服务(其他spring bean)也将被序列化。 他们通常是代理人,提及交易pipe理者,实体经理工厂等。 某些服务甚至控制器通过实现ApplicationContextAware来持有对ApplicationContext的引用不是不太可能,所以这可以有效地表示整个上下文被序列化。 而且,由于它具有许多联系 – 即不能被想法序列化的东西,它将会在腐败状态下被恢复。 到目前为止,我一直忽略这些问题。 最近我想到了声明所有的spring依赖关系是transient并通过静态工具类WebApplicationContextUtils readResolve()它们返回到readResolve() ,并将请求/ ServletContext保存在ThreadLocal 。 这很乏味,但它保证,当对象被反序列化时,其依赖关系将与当前应用程序上下文“最新”。 有没有任何公认的做法,或任何序列化的spring上下文的指导方针。 请注意,在JSF中,托pipe的bean(〜控制器)是有状态的(与基于动作的Web框架不同)。 所以也许我的问题比JSF更适合spring-mvc。
这里是代码: @Repository public interface AccountRepository extends JpaRepository<Account, Long> {} 来自Spring Data JPA项目的JpaRepository 。 这里是testing代码: public class JpaAccountRepositoryTest extends JpaRepositoryTest { @Inject private AccountRepository accountRepository; @Inject private Account account; @Test @Transactional public void createAccount() { Account returnedAccount = accountRepository.save(account); System.out.printf("account ID is %d and for returned account ID is %d\n", account.getId(), returnedAccount.getId()); } } 结果如下: account […]
我有一个支持GET和POST请求的资源。 这里是一个示例资源的示例代码: @RequestMapping(value = "/books", method = RequestMethod.GET) public ModelAndView listBooks(@ModelAttribute("booksFilter") BooksFilter filter, two @RequestParam parameters, HttpServletRequest request) throws ParseException { LONG CODE } @RequestMapping(value = "/books", method = RequestMethod.POST) public ModelAndView listBooksPOST(@ModelAttribute("booksFilter") BooksFilter filter, BindingResult result) throws ParseException { SAME LONG CODE with a minor difference } 这两个方法中的代码实际上是相同的,除了让我们说一个variables的定义。 这两个方法可以很容易地使用method = {RequestMethod.POST, RequestMethod.GET}和一个简单的if里面。 我尝试了,但它不起作用,因为这两个方法在最后有不同的参数,即HttpServletRequest和BindingResult ( […]
在spring引导应用程序中添加HttpRequest拦截器的正确方法是什么? 我想要做的是logging每个http请求的请求和响应。 Spring启动文档根本不涵盖这个主题。 ( http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ ) 我发现了一些关于如何在老版本的spring上做同样的web示例,但是那些与applicationcontext.xml一起工作。 请帮忙。
我阅读关于@EnableWebMvc javadoc。 但是我不明白这个注解是什么意思? 你能清楚地说清楚吗?
我成功地将这个注解用于了Dao类。 回滚适用于testing。 但是现在我需要回滚实际的代码,而不仅仅是testing。 有特殊的注释用于testing。 但是哪些注释是针对非testing代码的? 这对我来说是一个很大的问题。 我已经花了一天的时间了。 官方文件不符合我的需要。 class MyClass { // this does not make rollback! And record appears in DB. EmployeeDaoInterface employeeDao; public MyClass() { ApplicationContext context = new ClassPathXmlApplicationContext( new String[] { "HibernateDaoBeans.xml" }); employeeDao = (IEmployeeDao) context.getBean("employeeDao"); } @Transactional(rollbackFor={Exception.class}) public void doInsert( Employee newEmp ) throws Exception { employeeDao.insertEmployee(newEmp); throw new […]
我的代码: @Component public class A { @Autowired private B b; public void method() {} } public interface X {…} @Component public class B implements X { … } 我想单独testingA级。我是否必须模拟B级? 如果是的话,怎么样? 因为它是自动assembly的,并且没有可以发送嘲弄对象的setter。