C#中FormsAuthentication用法实例

using System;
using System.Web;
using System.Web.Security;

namespace AuthTest
{
  public class Authentication
  {
    /// <summary>
    /// 设置用户登陆成功凭据(Cookie存储)
    /// </summary>
    /// <param name="UserName">用户名</param>
    /// <param name="PassWord">密码</param>
    /// <param name="Rights">权限</param>
    public static void SetCookie(string UserName,string PassWord,string Rights)
    {
      //
      //String PassWord="test";
      //
      String UserData = UserName + "#" + PassWord+"#"+Rights;
      if (true)
      {
        //数据放入ticket
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, UserName, DateTime.Now, DateTime.Now.AddMinutes(60), false, UserData);
        //数据加密
        string enyTicket = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, enyTicket);
        HttpContext.Current.Response.Cookies.Add(cookie);
      }
    }
    /// <summary>
    /// 判断用户是否登陆
    /// </summary>
    /// <returns>True,Fales</returns>
    public static bool isLogin()
    {
      return HttpContext.Current.User.Identity.IsAuthenticated;
    }
    /// <summary>
    /// 注销登陆
    /// </summary>
    public static void logOut()
    {
      FormsAuthentication.SignOut();
    }
    /// <summary>
    /// 获取凭据中的用户名
    /// </summary>
    /// <returns>用户名</returns>
    public static string getUserName()
    {
      if (isLogin())
      {
        string strUserData = ((FormsIdentity)(HttpContext.Current.User.Identity)).Ticket.UserData;
        string[] UserData = strUserData.Split('#');
        if (UserData.Length != 0)
        {
          return UserData[0].ToString();
        }
        else
        {
          return "";
        }
      }
      else
      {
        return "";
      }
    }
    /// <summary>
    /// 获取凭据中的密码
    /// </summary>
    /// <returns>密码</returns>
    public static string getPassWord()
    {
      if (isLogin())
      {
        string strUserData = ((FormsIdentity)(HttpContext.Current.User.Identity)).Ticket.UserData;
        string[] UserData = strUserData.Split('#');
        if (UserData.Length!=0)
        {
          return UserData[1].ToString();
        }
        else
        {
          return "";
        }
      }
      else
      {
        return "";
      }
    }
    /// <summary>
    /// 获取凭据中的用户权限
    /// </summary>
    /// <returns>用户权限</returns>
    public static string getRights()
    {
      if (isLogin())
      {
        string strUserData = ((FormsIdentity)(HttpContext.Current.User.Identity)).Ticket.UserData;
        string[] UserData = strUserData.Split('#');
        if (UserData.Length!=0)
        {
          return UserData[2].ToString();
        }
        else
        {
          return "";
        }
      }
      else
      {
        return "";
      }
    }
  }
}
(0)

相关推荐

  • C#中FormsAuthentication用法实例

    using System; using System.Web; using System.Web.Security; namespace AuthTest { public class Authentication { /// <summary> /// 设置用户登陆成功凭据(Cookie存储) /// </summary> /// <param name="UserName">用户名</param> /// <param name

  • Android 中WallpaperManager用法实例

    Android 中WallpaperManager用法实例 注意:壁纸的设置得加入权限: <uses-permission android:name="android.permission.SET_WALLPAPER"/> 1.WallpaperManager  对象的获得: wallpaperManager =WallpaperManager.getInstance(this); 2.设置壁纸的方法: 方法一:wallpaperManager.setBitmap(); /

  • Java中的instanceof关键字在Android中的用法实例详解

    在下面介绍Android中如何使用instanceof关键字开发更方便时,先来温习一下java中instanceof的概念. instanceof大部分的概念是这样定义的:instanceof是Java的一个二元操作符,和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据.举个栗子: String s = "I AM an Object!"; boolean isObj

  • Java中Pattern用法实例(正则表达式)

    目录 1. 正则表达式的应用 2. 常用正则表达式 3 贪婪匹配与懒惰匹配 补充:其它的一些用法 总结 1. 正则表达式的应用 在给用户发送消息时通常情况会有相同的消息模板,但其中部分信息跟用户相关,因此需要对消息模板中的变量部分进行替换.而对于一个系统而言可能有很多套完全不同的模板.因此需要一个通用的根据实际信息替换消息模板中变量的方法.消息模板的变量与velcity中的变量规范相同. publicstatic <K, V> String replacePlaceHolderWithMapV

  • AngularJS中ng-class用法实例分析

    本文实例讲述了AngularJS中ng-class用法.分享给大家供大家参考,具体如下: 使用 ng-class 动态设置元素的类,方法是绑定一个代表所有需要添加的类的表达式.重复的类不会添加.当表达式发生变化,先前添加的类会被移除,新类会被添加. 在angular中为我们提供了3种方案: ① 通过数据的双向绑定(不推荐使用) ② 通过对象数组. ③ 通过key/value 一.通过数据双向绑定: function changeClass(){ $scope.className = "chang

  • python中反射用法实例

    本文实例讲述了python中反射用法.分享给大家供大家参考.具体如下: import sys, types,new def _get_mod(modulePath): try: aMod = sys.modules[modulePath] if not isinstance(aMod, types.ModuleType): raise KeyError except KeyError: # The last [''] is very important! aMod = __import__(mo

  • js中this用法实例详解

    本文实例讲述了js中this用法.分享给大家供大家参考.具体如下: 1. 指向window 全局变量 alert(this) //返回 [object Window] 全局函数 function sayHello(){ alert(this); } sayHello(); 2. 指向该对象(在全局里面this指向window,在某个对象里面this指向该对象,在闭包里面this指向window) var user="the Window"; var box={ user:'the bo

  • python中assert用法实例分析

    本文实例讲述了python中assert用法.分享给大家供大家参考.具体分析如下: 1.assert语句用来声明某个条件是真的. 2.如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句. 3.当assert语句失败的时候,会引发一AssertionError. 测试程序: >>> mylist = ['item'] >>> assert len(mylist) >=

  • javascript中attachEvent用法实例分析

    本文实例讲述了javascript中attachEvent用法.分享给大家供大家参考.具体分析如下: 一般我们在JS中添加事件,是这样子的 obj.onclick=method 这种绑定事件的方式,兼容主流浏览器,但如果一个元素上添加多次同一事件呢? obj.onclick=method1 obj.onclick=method2 obj.onclick=method3 如果这样写,那么只有最后绑定的事件,这里是method3会被执行,这个时候我们就不能用onclick这样的写法了,主角改登场了,

  • javascript中this用法实例详解

    本文实例讲述了javascript中this用法.分享给大家供大家参考,具体如下: JavaScript中的this含义非常丰富,它可以是全局对象,当前对象或者是任意对象,这都取决于函数的调用方式.函数有以下几种调用方式:作为对象方法调用.作为函数调用.作为构造函数调用.apply或call调用. 对象方法调用 作为对象方法调用的时候,this会被绑定到该对象. var point = { x : 0, y : 0, moveTo : function(x, y) { this.x = this

随机推荐