📄 simpleloginmodule.java
字号:
import java.io.*;
import java.util.*;
import java.security.Principal;
import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.spi.LoginModule;
public class SimpleLoginModule implements
LoginModule {
private static final int NOT_AUTHENTICATED = 0;
private static final int AUTHENTICATED = 1;
private static final int
AUTHENTICATE_COMMITTED = 2;
private int state;
private SimplePrincipal sp;
private Subject sub;
public boolean abort() {
if ((sub != null) && (sp != null)) {
Set prins = sub.getPrincipals();
if (prins.contains(sp)) {
prins.remove(sp);
}
}
sub = null;
sp = null;
state = NOT_AUTHENTICATED;
return true;
}
public boolean commit() {
if (state < AUTHENTICATED) {
return false;
}
if (sub == null) {
return false;
}
Set prins = sub.getPrincipals();
if (!prins.contains(sp)) {
prins.add(sp);
}
state = AUTHENTICATE_COMMITTED;
return true;
}
public void initialize(Subject s, CallbackHandler ch, Map shared, Map options) {
state = NOT_AUTHENTICATED;
sp = null;
sub = s;
}
public boolean login() {
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
System.err.println("What can Jack Burton see? ");
try {
String resp = br.readLine();
if (!resp.equalsIgnoreCase("things no one else can see")) {
return false;
}
}
catch (IOException ioe) {
return false;
}
sp = new SimplePrincipal("Jack");
state = AUTHENTICATED;
return true;
}
public boolean logout() {
state = NOT_AUTHENTICATED;
sp = null;
sub = null;
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -