您可以使用Java注释来评估方法中的某些内容吗?

您可以使用Java注释来评估方法中的某些内容吗?,java,annotations,Java,Annotations,我想看看是否可以使用注释来评估用户是否登录 范例 @AuthRequired public String myProtectedArea() { return View("view/protectedArea"); // If user is NOT authenticated, return "view/login" } 注释不检查用户是否登录——注释是类/方法上的元数据。某些东西仍然必须使用注释 代码中的某些内容会检查该方法是否用@AuthRequired注释,如果是,则检查是否已登录

我想看看是否可以使用注释来评估用户是否登录

范例

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

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

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

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

根据您的编辑: 查看此SO帖子:

我仍然建议使用它,它经过测试且安全:

@PreAuthorize("hasRole('ROLE_USER')")
public String myProtectedArea() {
  return View("view/protectedArea"); 
}
注释将检查用户是否已登录并具有所需的凭据

Spring安全性的另一种方法是通过在Spring.Security-settings.xml中设置来拦截URL模式:

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

我建议两者都使用,以最大限度地提高安全性

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

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


这是一个经过测试的框架,因此安全且通用。但是,如果您想要的不仅仅是标准行为,则需要进行一些设置。

根据您创建的应用程序类型,有许多选项可用于定义特定方法的身份验证级别

我很可能会向你推荐这样一项任务

下面的示例是使用配置后的最终结果

然后,只有经验证具有您提供给批注的角色的用户才有权调用该方法


您可以利用中的几个其他注释选项,例如@PreAuthorize

与其重新发明车轮,不如看看JAAS:


这是什么类型的应用程序?一个Web应用程序?我知道,我想了解的是,如何让我的代码检查该注释。@KronosVarmentos通过正常的反射机制,如or等。检查:@KronosVarmentos或库,如果您需要扫描类路径,并且不想执行Spring路由。
 @Secured( {"USER_ROLE"} )
 public String getSecretData() {
      return "SECRET! SHHH!";
 }