你可以使用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?