[英]use @before annotation in play 1.2.5?
我希望在将用户发送到登录名之前检查会话-从而每个URL请求都将检查是否来自有效会话-如果不是,请将其发送到登录页面,否则按常规进行处理。 如果用户已经有一个活动会话,我们将不向他们显示登录页面,而是将他们带到预定义的主页。
我在Google上搜索了与此相关的信息,并知道它将通过在控制器中使用@Before
注解来完成,但不了解@Before
工作方式以及如何使用? 我正在使用播放1.2.5。
您可以使用@Before这样:
@Before
static void addUser() {
User user = connected();
if(user != null) {
renderArgs.put("user", user);
}
}
static User connected() {
if(renderArgs.get("user") != null) {
return renderArgs.get("user", User.class);
}
// Find your user from session
String username = session.get("user");
if(username != null) {
return User.find("byUsername", username).first();
}
return null;
}
// ~~render your login if the user is not finded in session
public static void index() {
if(connected() != null) {
render();
}
login();
}
您可以在YOUR_PLAY_DIR /示例和测试/预订中找到此示例代码。
正如@ emt14所说,您可以使用Play安全模块更轻松地完成此操作。 在YOUR_PLAY_DIR / samples-and-tests / forum中查看论坛应用示例。
Play安全模块开箱即用。 大多数应用程序都使用它,并且还与其他插件集成。 在此处查看文档。
如果仍要自己实现,则可以使用安全代码作为示例。
否则, @ Before可以在您的任何控制器静态方法上使用,并且可以访问所有作用域对象,包括会话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.