logindoasks.java

来自「本书以大量精简的实例介绍了Java安全性编程方面的概念和技术」· Java 代码 · 共 55 行

JAVA
55
字号
import com.sun.security.auth.callback.TextCallbackHandler;
import javax.security.auth.*;
import javax.security.auth.login.*;
import java.security.*;
import java.util.*;
import java.io.*;
// import  sample.principal.SamplePrincipal;
public class LoginDoAsKS{
   public static void main(String[] args) {
       LoginContext c=null;
        //登录
       TextCallbackHandler handler=new TextCallbackHandler( );
       boolean pass;
       try {
	      c = new LoginContext("simp",handler);
 	      c.login();
       } 
	catch (LoginException le) {
             System.out.println("Authentication failed!");
             System.exit(1);
       } 
       Subject subj = c.getSubject();
       MyactionKS myact=new MyactionKS( );
	try {
//		String filecontent=(String) Subject.doAsPrivileged(subj, myact,null);
		String filecontent=(String) Subject.doAs(subj, myact);
              System.out.println("\n Below is result of run MyactionKS");
              System.out.println(filecontent);
	} catch (AccessControlException e) {
		System.out.println(e);
	} 

     }
}



class MyactionKS implements PrivilegedAction {
	public Object run() {
        String content="";
        String s;
        String filename="c:\\autoexec.bat";
        BufferedReader in;
        try{
	        in = new BufferedReader(new FileReader(filename));
   	        while ((s = in.readLine( )) != null) {
               content+=s+"\n";
           }
        }
        catch(IOException e){
             System.out.println(e);
        }
  	return content;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?