我试图通过cookie管理我的用户.这并不容易,因为绝对没有关于这个主题的文档.
在样本"zentask"的帮助下,我做了这个:
session("username", filledForm.field("username").value());
public class Secured{
public static Session getSession() {
return Context.current().session();
}
public static String getUsername() {
return getSession().get("username");
}
public static boolean isAuthorized() throws Exception {
String username = getUsername();
if (username == null)
return false;
long userCount = DatabaseConnect.getInstance().getDatastore()
.createQuery(User.class).field("username").equal(username)
.countAll();
if (userCount == 1)
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
public static Result blank() throws Exception {
if (Secured.isAuthorized())
return ok(Secured.getUsername());
else
return ok(views.html.login.form.render(loginForm));
}
Run Code Online (Sandbox Code Playgroud)
现在我有几个问题/问题:
1.)Cookie不是dectypted,看起来总是一样.例如bdb7f592f9d54837995f816498c0474031d44c1a-username%3Akantaki
2.)Security.Authenticator类有什么作用?
3.)我认为通过cookie进行用户管理是一个非常普遍的问题,确实可以玩!2.0为我提供了完整的解决方案吗?或者至少有一些文件?
我正在阅读几本关于OpenGL的书,其中两本书总是逆时针定义顶点.从我读到的内容来看,这非常重要,因为它决定了正面和背面的位置.
但我也正在阅读http://www.arcsynthesis.org/gltut/上的教程,并且他顺时针定义它们.
const float vertexPositions[] = {
0.75f, 0.75f, 0.0f, 1.0f,
0.75f, -0.75f, 0.0f, 1.0f,
-0.75f, -0.75f, 0.0f, 1.0f,
};
Run Code Online (Sandbox Code Playgroud)
我不应该总是使用逆时针符号,因为那是opengl的默认值吗?
另外为什么是a型float?不应该是一个GLfloat?
我喜欢尝试许多不同的编程语言,但我真的永远不会在实际项目中使用它们,因为我需要的所有重要的库都是用C++编写的.
通常我必须编写一个非常耗时的C接口,所以我想知道是否存在可以无缝调用任何C++代码的编程语言?
void foo(T, size_t size)(in T[size] data){...}
//vs
void foo(T, size_t size)(const ref T[size] data){...}
Run Code Online (Sandbox Code Playgroud)
根据/sf/answers/18994111/,pass by value在某些情况下,C++似乎更快.
但是D有一个特殊的关键字in,我想知道什么时候应该使用它.是否in总是导致一个副本还是一个编译器优化?
我可以遵循哪些指导方针帮助我决定const ref和in?
我目前正在编写一个Vulkan渲染器,我刚刚意识到我应该只接受那些类型repr(C),但据我所知,在编译时无法实际检查它.
struct Vertex {
x: f32,
y: f32,
b: Box<f32>
}
#[repr(C)]
struct Vertex2 {
x: f32,
y: f32,
b: Box<f32>
}
fn to_bytes<T>(t: &T) -> &[u8]{
let p: *const T = t;
let p = p as *const u8;
unsafe{
std::slice::from_raw_parts(p, std::mem::size_of::<T>())
}
}
fn main() {
let v = Vertex{x: 42.0, y: 0.0, b: Box::new(42.0)};
let v2 = Vertex2{x: 42.0, y: 0.0, b: Box::new(42.0)};
println!("{:?}", to_bytes(&v));
println!("{:?}", to_bytes(&v2));
}
Run Code Online (Sandbox Code Playgroud)
经过几次尝试,我终于可以看到repr(c)和之间的区别,repr(rust)但只有当我使用了Box …
目前我正在尝试构建一个具有很高安全性的登录系统.
所以我想使用bcrypt,我还找到了第三方库 py-bcrypt.
但是作者说这是一个纯粹的python实现.
现在我在某处读到,不推荐在python中使用bcrypt,因为它太慢而导致安全漏洞.bcrypt应该用C实现.
谁能证实这一点?那我该怎么办?
我应该使用:
我正在使用Google App Engine
编辑: http ://packages.python.org/passlib/lib/passlib.hash.bcrypt.html#bcrypt-backends
应该注意的是,考虑到安全性当前所需的轮次数,pure-python实现(#4)太慢而无法使用.因此,默认情况下禁用它,除非设置了环境变量PASSLIB_BUILTIN_BCRYPT ="enabled".
我正在尝试使用一致的数据库,其中用户名和电子邮件是唯一的.
http://www.mongodb.org/display/DOCS/Indexes#Indexes-unique%3Atrue
http://code.google.com/p/morphia/wiki/EntityAnnotation
我的用户类看起来像这样:
public class User {
@Indexed(unique = true)
@Required
@MinLength(4)
public String username;
@Indexed(unique = true)
@Required
@Email
public String email;
@Required
@MinLength(6)
public String password;
@Valid
public Profile profile;
public User() {
...
Run Code Online (Sandbox Code Playgroud)
我使用@Indexed(unique = true)注释但它不起作用.我的数据库中仍有重复项.
我有什么想法可以解决这个问题?
编辑:
我读到了关于ensureIndexes但这似乎是一个错误的方法,我不想上传重复数据,只是为了看到它真的是重复.
我想立刻阻止它.
有点像
try{
ds.save(user);
}
catch(UniqueException e){
...
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在Java中编写正确的微基准测试?
假设我有两种算法,如何找出哪种算法具有更高的性能?
我的意思是我可以在数学上证明它,但如果我使用一些库,这可能会变得乏味.我没有学过如何在没有数学的情况下做正确的基准.
例如,我正在尝试使用GLFW3,它会向我抛出以下错误
x11_init.c:-1:错误:未定义引用`XIQueryVersion'.
我只知道它与X11有关,但我怎么知道我要链接哪个库?你会如何解决这个问题?