ably ably برای هدایت شدن به سایت جدید اینجا کلیک کنید

آموزش برنامه نویسی

آموزش برنامه نویسی وب، اندروید، ویندوز , اسکیوال و...
Tell: 0912 097 5516
| Email: Hello@EduOnline.ir

آموزش Asp.net Identity

بسم الله الرحمن الرحیم

آموزش Authentication در MVC

آموزش Asp.net Membership

آموزش ASP.NET Identity

آموزش 2 ASP.NET Identity

آموزش 3 ASP.NET Identity

در بخش های قبلی کار با Asp.net Identity را بررسی کردیم.

خوب بدون هیچ وقفه ای به سراغ مبحث اصلی این مقاله می رویم، اگر خاطرتان باشد، گفتیم برای ذخیره اطلاعات در Asp.net Identity می توانیم از روش Cookie استفاده کنیم.

حال فکر کنید شما می خواهید اطلاعات کلاس یا همان Model کاربر خود را در Cookie ذخیره کنید. با توجه به این که Cookie فقط اجازه ذخیره کردن اشیاء Serialize را می دهد شما نمی توانید به صورت زیر عمل کنید:

User user = // function to get user
HttpCookie cookie = new HttpCookie();
cookie.Value = user;

البته در Asp.net Identity ما به این صورت cookie.Value = user اطلاعات را ذخیره نمی کنیم. اما تفاوتی نخواهد داشت.

مشکلی که اینجا مشترک است این است که کوکی نمی تواند اطلاعات یک کلاس یا Model را ذخیره کند.

راه حل:

کلاس زیر را در نظر بگیرید

    public class clsAdmin
    {
    private string _name;

    public string Name
    {
    get { return _name; }

    set { _name = value; }
    }

    private int _id;

    public int AdminId
    {
    get { return _id; }
    set { _id = value; }
    }
    }

متد Serialize

/// ---- SerializeAnObject -----------------------------
/// <summary>
/// Serializes an object to an XML string
/// </summary>
///AnObject">The Object to serialize
/// <returns>XML string</returns>

public static string SerializeAnObject(object AnObject)
{
    XmlSerializer Xml_Serializer = new XmlSerializer(AnObject.GetType());
    StringWriter Writer = new StringWriter();      

    Xml_Serializer.Serialize(Writer, AnObject);
    return Writer.ToString();
}

متد Deserialize

/// ---- DeSerializeAnObject ------------------------------
/// <summary>
/// DeSerialize an object
/// </summary>
///XmlOfAnObject">The XML string
///ObjectType">The type of object
/// A deserialized object...must be cast to correct type

public static Object DeSerializeAnObject(string XmlOfAnObject, Type ObjectType)
{       
    StringReader StrReader = new StringReader(XmlOfAnObject);
    XmlSerializer Xml_Serializer = new XmlSerializer(ObjectType);
    XmlTextReader XmlReader = new XmlTextReader(StrReader);
    try
    {
        Object AnObject = Xml_Serializer.Deserialize(XmlReader);
        return AnObject;
    }
    finally
    {
        XmlReader.Close();
        StrReader.Close();
    }
}

حال کلاس خود را Serialize می کنیم

    clsAdmin admin = new clsAdmin();

    admin.Name = “UBK”;

    admin.AdminId = 1;

    //  Serialize it

    String _serAdmin = SerializeAnObject(admin);

برای امنیت می توانیم اطلاعات خود را encrypt کنیم

String _encVal = EncDec.Encrypt(_serAdmin, “YOUR PASSWORD”);

ذخیره اطلاعات در ASP.NET Identity Claims

identity.AddClaim(new Claim(ClaimsType.Country,_encVal))

این قسمت مربوط به ASP.NET web form می باشد

حال می توانیم اطلاعات خود را در Cookie ذخیره کنیم

    try
    {
    HttpCookie myCookie = new HttpCookie(“admin_cookie”);
    DateTime now = DateTime.Now;

    // Set the cookie value.
    myCookie.Value = _encVal;

    // Set the cookie expiration date.
    myCookie.Expires = now.AddDays(14);

    // Add the cookie.
    Response.Cookies.Add(myCookie);
    }
    catch (Exception _e)
    {
    //Failed to add Cookie
    throw _e;
    }

و می توانیم Cookie خود را به صورت زیر بخوانیم

    try
    {
    HttpCookie myCookie = new HttpCookie(“admin_cookie”);
    myCookie = Request.Cookies["admin_cookie"];

    // Read the cookie information and display it.
    if (myCookie != null)
    {
    string _admStr = EncDec.Decrypt(myCookie.Value, “YOUR PASSWORD”);
    clsAdmin _adm = DeSerializeAnObject(_admStr, typeof(clsAdmin)) as clsAdmin;

    if (null != _adm && _adm.Login.Length > 0)
    {
    //DO Whatever you want with the object
    }
    }
    else
    Response.Write(“not found”);
    }
    catch (Exception _e)
    {
    //Failed to read cookie?
    throw _e;
    }

نظرات (۰)

هيچ نظري هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
up
ما را در گوگل محبوب کنید