你可以使用Java Annotations来评估方法中的某些东西吗?

我想查看是否有可能使用注释来判断用户是否登录。

@AuthRequired
public String myProtectedArea() {
  return View("view/protectedArea"); // If user is NOT authenticated, return "view/login"
}

根据你的编辑:检查这个SO帖子:

在运行时扫描Java注释

我仍然建议使用Spring Security,它已经过测试和安全:

@PreAuthorize("hasRole('ROLE_USER')")
public String myProtectedArea() {
  return View("view/protectedArea"); 
}

该注释将检查用户是否已登录并具有所需的凭证。

Spring Security的另一种方式是通过在spring.security-settings.xml中设置这个内容来拦截URL模式:

    <intercept-url pattern="/view/protectedArea/*" access="hasRole('ROLE_USER')" />

我建议使用两者来最大化安全性。

在安全设置文件中,您可以告诉spring安全性将用户重定向到登录的位置。 如果用户已经登录,您可以将他重定向到另一个页面:

<form-login login-page="/view/login.xhtml" default-target-url="/view/protectedArea/home.xhtml"
            authentication-failure-url="/view/login.xhtml" />

这是一个经过测试的框架,因此安全和多功能。 但是,如果你想要比标准行为更多的话,它需要一些设置。


注释不检查用户是否登录 - 注释是类/方法的元数据。 某些东西仍然必须使用注释。

代码中的某些内容会检查该方法是否使用@AuthRequired注释,如果是,则检查是否已登录,然后基于该方法执行该方法。

例如,Web应用程序可能会在过滤器,基本servlet,拦截器等中查找注释,并决定请求过程是否应该继续。


根据您创建的应用程序类型的不同,可以使用多种选项来定义特定方法的身份验证级别。

我很可能会向你推荐Spring Security来完成这样的任务。

类似下面的例子将是使用Spring Security进行配置后的最终结果。

 @Secured( {"USER_ROLE"} )
 public String getSecretData() {
      return "SECRET! SHHH!";
 }

然后,只有Spring Security验证过的用户才能拥有您提供给注释的角色才有权调用该方法。

您可以使用Spring Security中的其他注释选项,例如@PreAuthorize。

链接地址: http://www.djcxy.com/p/56641.html

上一篇: Can you use Java Annotations to evaluate something in a method?

下一篇: What is a good way of looping through lines in a multi