当前位置:编程问答 > IIS >

Android与IIS身份验证——Form验证

内容摘要

  前言

  设计思路

  ASP.NET服务器端

  Android客户端

  运行结果

        

  上篇《Android与IIS身份验证——基本验证》实现了Android客户端与IIS的简单验证。而这种验证方式虽然使用起来比较简单,但是也有很多缺点。如,安全性较差,账号密码设置不灵活。让我们回顾一下ASP.NET的身份验证方式:Windows、Form和Passport。这三种验证方式中,Form身份验证方式最经常使用,因为它有很多优越性,其优点我就不一一介绍了。那么,怎样实现Android客户端与IIS的Form身份验证呢?我整理了一下,需要以下几个步骤:


   一、设计思路

   Android客户端访问IIS服务器时,当没有登陆时,ASP.NET通过Form集成验证方法会返回一个登陆页面。然后输入正确的用户名和密码,就可以进入主程序了。流程如图1.1所示。

 \

图1.1

 

  在Android客户端访问以IIS为宿主的ASP.NET服务器时,返回JSON格式来传递数据。客户端中,根据返回数据的不同而判断当前状态是否已登陆。由于Form验证是保存了Cookie,所示每次调用Http请求之前要先添加上次请求的Cookie。


  二、ASP.NET服务器端

  创建一个ASP.NET MVC网站项目。

  首先,由于每次请求都返回JSON格式的数据,我们编写一个Model类来承载数据。

  

    public class ResponseResult
    {
        /// <summary>
        /// 是否已登录
        /// </summary>
        public bool IsAuthenticated { get; set; }

        /// <summary>
        /// 是否执行成功
        /// </summary>
        public bool IsSuccess { get; set; }

        /// <summary>
        /// 登录账号
        /// </summary>
        public string Identity { get; set; }

        /// <summary>
        /// 执行结果
        /// </summary>
        public object Result { get; set; }
    }
 

  接着,编写HomeController:

  

    [HandleError]
    public class HomeController : Controller
    {
        [Authorize]
        public ActionResult Index()
        {
            return Json(new ResponseResult
            {
                Result = "登陆成功",
                IsAuthenticated = true,
                IsSuccess = true,
                Identity = this.User.Identity.Name
            }, "text/html", JsonRequestBehavior.AllowGet);
        }

        public ActionResult LogOn()
        {
            return Json(new ResponseResult
            {
                Result = "您尚未登录",
                IsSuccess = true
            }, "text/html", JsonRequestBehavior.AllowGet);
        }

        public ActionResult Register(string account, string password)
        {
            if (account == "liudong" && password == "123")
            {
                FormsAuthentication.SetAuthCookie(account, false);
                return Json(new ResponseResult
                {
                    Result = "登录成功",
                    IsSuccess = true,
                    IsAuthenticated = true,
                    Identity = account
                }, "text/html", JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new ResponseResult
                {
                    Result = "用户名或密码错误",
                }, "text/html", JsonRequestBehavior.AllowGet);
            }
        }
 

  Index Action为登陆认证后才能访问的Action。

  LogOn Action为未登陆时跳转的Action。

  Register Action为登陆Action,用户名和密码正确后就保存Form验证的Cookie。

 

  然后,在Web.config中配置Form验证配置

 

<authentication mode="Forms">
      <forms loginUrl="~/Home/LogOn" timeout="2880" />
</authentication>

  最后,配置IIS,部署ASP.NET MV网站,如图2.1所示。

 \

 图2.1

 

  三、Android客户端

   首先,编写一个调用Http请求的类。

  

package ld.com.authorize;

import java.io.BufferedReader;
impor

补充:移动开发 , Android ,
Apache
IIS
Nginx
Tomcat
如果你遇到什么编程难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,