2014-01-14 1 views
4

4 용도의 asp.net MVC에서위한 인증에서 세션 변수를 사용 : 사용자가 연결될 때 다음내가되는 난이 클래스 가지고의 asp.net mvc4 애플리케이션이

public class Internaute { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Login { get; set; } 
    public string Password { get; set; } 
} 

를, I는 정보를 얻을

Session["user"] = myInternaute; 

그리고이 전 사용 정보, 예를 들어, 다음과 같은 :

@{ 
    Internaute myInternaute = (Internaute)Session["user"]; 
    string login = myInternaute.Login; 
    string pwd = myInternaute.Password; 
} 
이런 세션 변수에 저장하여 이 세션 변수에 의해 진행하는 좋은 방법

  1. 인가 :

    나는 그래서 내가이 질문이

    Internaute myInternaute = (Internaute)Session["user"]; 
        if(myInternaute == null) return RedirectToAction("Index"); 
    

    에 의한 액세스를하는 것은 사용자의 autorization을 테스트?

  2. 세션을 잃어 버렸기 때문에 다른 방법이 있습니까?
  3. 이 아이디어에는 몇 가지 이점이 있습니까?

감사합니다,

답변

3

은 세션 변수에 의해 진행하는 좋은 방법이 있나요?

네 네가 null이 아닌지 확인하기 위해 Session에서 값을 얻을 때마다 null을 확인해야한다는 점을 제외하면 코드가 좋아 보인다. 또한 세션에 저장된 비밀번호가 정말로 필요합니까? 세션에 문자열로 저장하는 것은 좋지 않습니다.

세션을 잃어 버렸기 때문에 다른 방법이 있습니까?

질문을 올바르게 이해하면 네 세션 데이터가 세션 시간 초과시 손실됩니다. 원하는 경우 web.config 파일에서 세션 시간 초과를 늘릴 수 있습니다.

이 아이디어에는 몇 가지 이점이 있습니까?

당신은 세션 대신 데이터베이스를 조회에서 쉽게 사용할 수있는 사용자에 대한 몇 가지 기본적인 데이터가하지만 당신은 Internaute 클래스는 경량 남아 있는지 확인해야합니다.

+0

감사합니다. 죄송합니다. "Internaute 클래스가 가볍게 유지되는지 확인하십시오."라는 문장이 무슨 뜻인지 이해가 안 되니? –

+1

많은 속성을 추가하지 마십시오. 애플리케이션 전반에 걸쳐 자주 필요한 것을 보관하십시오. 다른 모든 필드는 필요한 경우 DB에서 가져올 수 있습니다. –